【问题标题】:Is it possible to call a custom-bound widget's methods in Durandal?是否可以在 Durandal 中调用自定义绑定小部件的方法?
【发布时间】:2016-04-30 22:08:33
【问题描述】:

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

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

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

ParentViewModel.prototype.buttonClick = function() {

    this.myWidget.doSomething();

}

有没有一种简洁的方法可以从父视图模型访问以这种方式组成的小部件?

【问题讨论】:

    标签: durandal durandal-2.0


    【解决方案1】:

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

    • 向父视图模型添加一个 observable,我们称之为“myWidget”
    • 使用小部件绑定在激活时将空的 observable 传递给小部件
    • 在激活期间,小部件将父级的可观察对象设置为自身

    例如,在 View Model 定义中:

    this.myWidget = ko.observable(null);
    

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

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

    在widget的activate方法中设置父视图的引用:

     MyWidget.prototype.activate = function(activationObject) {
    
        activationObject.theirWidget(this);
    
     }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多