在 javascript 内计算出的敲除设置揭示了模块模式
knockout setting computed within javascript revealing module pattern
我正在使用带有显示模块模式的敲除。我想通过引用传递一个可观察对象,并根据计算得到它的值。这个问题是它没有通过引用传递到模式中……它似乎是通过值传递的。
listPersonClientSelect is observable() 我想将其传递给 js 函数并在 listPersonClientSelect 上建立计算(您可以在下面的代码中看到我将 observable 作为参数传递给 init 和我想要根据 select2Data()
的变化将此可观察值设置为计算值
init 函数调用如下....所以最终结果是什么
self.assigneePersonSetupKO.listPersonClientSetup 确实显示了计算结果但是我真正想要的是 self.assignees() 来显示变化(计算值)
可否将self.assignees传给js显示拍拍参考?
self.assigneePersonSetupKO = new PersonSetupKO();
self.assigneePersonSetupKO.init(self.assignees);
var PersonSetupKO = function () {
"use strict";
//var self = this;
var select2Data = ko.observable(''),
initialOptions = [],
initialSelectedOptions = [],
listPersonClientSelect = ko.observable(),
init = function (listPersonClientSelect) {
this.initialOptions = $.map(listPersonClientSelect(), function (item) {
return { DisplayName: item.DisplayName(), Gen: item.Id() }
});
this.initialSelectedOptions = $.map(listPersonClientSelect(), function (item) {
return item.Gen();
});
this.select2Data($.map(listPersonClientSelect(), function (item) {
return { text: item.DisplayName(), id: item.Id() };
}));
this.listPersonClientSelect = ko.computed(function () {
var results = $.map(select2Data(), function (item) {
return {
DisplayName: ko.observable(item.text),
Id: ko.observable(item.id)
}
});
return results;
});
};
return {
init: init,
select2Data: select2Data,
initialOptions: initialOptions,
initialSelectedOptions: initialSelectedOptions,
listPersonClientSelect: listPersonClientSelect
};
};
Observables 总是通过引用传递。所以 init
确实收到了对原始可观察对象的引用。你只需要写信给它:
this.updateListPersonClientSelect = ko.computed(function () {
var results = $.map(select2Data(), function (item) {
return {
DisplayName: ko.observable(item.text),
Id: ko.observable(item.id)
}
});
listPersonClientSelect(results);
});
我正在使用带有显示模块模式的敲除。我想通过引用传递一个可观察对象,并根据计算得到它的值。这个问题是它没有通过引用传递到模式中……它似乎是通过值传递的。
listPersonClientSelect is observable() 我想将其传递给 js 函数并在 listPersonClientSelect 上建立计算(您可以在下面的代码中看到我将 observable 作为参数传递给 init 和我想要根据 select2Data()
的变化将此可观察值设置为计算值init 函数调用如下....所以最终结果是什么
self.assigneePersonSetupKO.listPersonClientSetup 确实显示了计算结果但是我真正想要的是 self.assignees() 来显示变化(计算值)
可否将self.assignees传给js显示拍拍参考?
self.assigneePersonSetupKO = new PersonSetupKO();
self.assigneePersonSetupKO.init(self.assignees);
var PersonSetupKO = function () {
"use strict";
//var self = this;
var select2Data = ko.observable(''),
initialOptions = [],
initialSelectedOptions = [],
listPersonClientSelect = ko.observable(),
init = function (listPersonClientSelect) {
this.initialOptions = $.map(listPersonClientSelect(), function (item) {
return { DisplayName: item.DisplayName(), Gen: item.Id() }
});
this.initialSelectedOptions = $.map(listPersonClientSelect(), function (item) {
return item.Gen();
});
this.select2Data($.map(listPersonClientSelect(), function (item) {
return { text: item.DisplayName(), id: item.Id() };
}));
this.listPersonClientSelect = ko.computed(function () {
var results = $.map(select2Data(), function (item) {
return {
DisplayName: ko.observable(item.text),
Id: ko.observable(item.id)
}
});
return results;
});
};
return {
init: init,
select2Data: select2Data,
initialOptions: initialOptions,
initialSelectedOptions: initialSelectedOptions,
listPersonClientSelect: listPersonClientSelect
};
};
Observables 总是通过引用传递。所以 init
确实收到了对原始可观察对象的引用。你只需要写信给它:
this.updateListPersonClientSelect = ko.computed(function () {
var results = $.map(select2Data(), function (item) {
return {
DisplayName: ko.observable(item.text),
Id: ko.observable(item.id)
}
});
listPersonClientSelect(results);
});