durandal,在导航期间将参数传递给小部件

时间:2014-05-15 16:43:01

标签: durandal durandal-2.0 durandal-navigation

我的SPA中有几个单独的视图,每个视图都包含相同的小部件。

当视图被激活时,我从激活回调中获取一些参数并将其传递给小部件,它工作正常。

但是如果我第二次导航到视图中(使用不同的参数进入激活回调) 小部件的激活方法是不正确的。

如何将新数据传递给小部件?

我尝试使参数可观察并将其订阅到小部件(settings.params.subscribe)并且它可以工作,但我不认为它是一个很好的解决方案。

1 个答案:

答案 0 :(得分:2)

假设您从窗口小部件返回构造函数,这应该非常简单 -

查看模型 -

var thisWidget = new widget(someArbitraryData)

function createWidget() {
    dialog.show(thisWidget);
}

// later
function updateWidget() {
    thisWidget.refreshData(newArbitraryData);
}

小部件模块 -

define([], function () {
    var ctor = function () {
        var self = this;
        self.data = ko.observable();
    };
    ctor.prototype.refreshData = function (newData) {
        var self = this;
        self.data(newData);
    };
    ctor.prototype.activate = function (activationData) {
        var self = this;
        self.data(activationData);
    };
});