我已在Durandal中创建并注册了一个小部件,所以现在我可以在其他视图中使用此标记:
<div data-bind="MyWidget: { activationData }" />
我想从父视图模型调用该窗口小部件上的方法,例如:
ParentViewModel.prototype.buttonClick = function() {
this.myWidget.doSomething();
}
是否有一种巧妙的方法可以从父视图模型访问以这种方式组成的窗口小部件?
答案 0 :(得分:0)
自发布问题以来,我一直在研究这个问题,而我提出的最佳解决方案是:
例如,在视图模型定义中:
this.myWidget = ko.observable(null);
在父视图中使用窗口小部件绑定:
<DIV data-bind="MyWidget: { theirWidget : myWidget }" />
在小部件的激活方法中设置父视图的引用:
MyWidget.prototype.activate = function(activationObject) {
activationObject.theirWidget(this);
}
虽然这是一个合理的解决方案,但在接受此答案之前,我会等待其他人是否提供替代方案。