gpt4 book ai didi

javascript - 如何在另一个 View 模型中调用 View 模型中的函数?

转载 作者:行者123 更新时间:2023-12-03 04:06:48 25 4
gpt4 key购买 nike

我想将 DevExtreme Scheduler 分成 2 个 View 模型。一个用于实际的调度程序,另一个用于显示弹出窗口并处理按钮。但是我拥有一切,但无法调用 Popup View 模型内的函数。

$(document).ready(function () {

var model = new viewModel();
ko.applyBindings(model, document.getElementById("BookingScheduler"));

var popup = new viewPopup();
ko.applyBindings(popup, document.getElementById("BookingPopup"));

});

在我的调度程序中,我有一个点击处理程序,在其中我想调用弹出 View 模型中的 loadData 函数。

function viewPopup() {
function loadData(data) {
}
}

这就是我尝试调用它的方式popup.loadData(data);viewPopup().loadData(data); 但它们都不起作用。我得到popup.loadData()不是一个函数。我怎样才能做到这一点?

最佳答案

通常,您创建一个主视图模型并使用 with 绑定(bind)来绑定(bind) subview 模型:

var App = function() {
this.scheduler = new viewModel();
this.popup = new viewPopup();
}

$(document).ready(function () {
ko.applyBindings(new App());
});

使用 HTML:

<body>
<div data-bind="with: scheduler" id="BookingScheduler"></div>
<div data-bind="with: popup" id="BookingPopup"></div>
</body>

现在,尽管我不确定是否会推荐它,但您可以使用 popup 中的 $root.scheduler 访问其他虚拟机,并且 来自 scheduler 的 $root.popup

更好的选择可能是在实例化时传递对 popup View 模型的引用。

第三个选项是使用“邮箱”模式 ( like this plugin by R. Niemeyer )。

关于javascript - 如何在另一个 View 模型中调用 View 模型中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44514595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com