是否可以在Durandal中调用自定义绑定小部件的方法?

时间:2016-04-30 22:08:33

标签: durandal durandal-2.0

我已在Durandal中创建并注册了一个小部件,所以现在我可以在其他视图中使用此标记:

<div data-bind="MyWidget: { activationData }" />

我想从父视图模型调用该窗口小部件上的方法,例如:

ParentViewModel.prototype.buttonClick = function() {

    this.myWidget.doSomething();

}

是否有一种巧妙的方法可以从父视图模型访问以这种方式组成的窗口小部件?

1 个答案:

答案 0 :(得分:0)

自发布问题以来,我一直在研究这个问题,而我提出的最佳解决方案是:

  • 添加一个可观察对象,让我们将它&#34; myWidget&#34;,调用到父视图模型
  • 使用widget binding
  • 在激活时将空的observable传递给窗口小部件
  • 在激活期间,窗口小部件将父级可观察对象设置为

例如,在视图模型定义中:

this.myWidget = ko.observable(null);

在父视图中使用窗口小部件绑定:

<DIV data-bind="MyWidget: { theirWidget : myWidget }" />

小部件的激活方法中设置父视图的引用:

 MyWidget.prototype.activate = function(activationObject) {

    activationObject.theirWidget(this);

 }

虽然这是一个合理的解决方案,但在接受此答案之前,我会等待其他人是否提供替代方案。