我的 SPA 中有几个单例视图,每个视图都包含相同的小部件。
当视图被激活时,我从激活回调中获取一些参数并将其传递给小部件,它工作正常。
但是,如果我第二次导航到视图中(在激活回调中使用不同的参数),小部件的激活方法就不会被引发。
如何将新数据传递给小部件?
我试图使参数可观察并将其订阅到小部件(settings.params.subscribe)并且它有效,但我认为这不是一个好的解决方案。
我的 SPA 中有几个单例视图,每个视图都包含相同的小部件。
当视图被激活时,我从激活回调中获取一些参数并将其传递给小部件,它工作正常。
但是,如果我第二次导航到视图中(在激活回调中使用不同的参数),小部件的激活方法就不会被引发。
如何将新数据传递给小部件?
我试图使参数可观察并将其订阅到小部件(settings.params.subscribe)并且它有效,但我认为这不是一个好的解决方案。
假设您从小部件返回构造函数,这应该非常简单 -
查看模型 -
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);
};
});