Joe*_*oel 19 javascript knockout.js
我在KnockoutJS中有一个模型类,它有多个我想订阅的值.每个订阅都将执行相同的任务,如下所示:
function CaseAssignmentZipCode(zipCode, userId, isNew) {
var self = this;
self.zipCode = ko.observable(zipCode);
self.userId = ko.observable(userId);
self.isNew = isNew;
self.isUpdated = false;
self.zipCode.subscribe(function () { self.isUpdated = true; });
self.userId.subscribe(function () { self.isUpdated = true; });
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将这两个调用结合起来订阅,以便我可以使用一个订阅来"监视"这两个值?
RP *_*yer 26
您可以为此目的使用计算的observable.您只需要确保在read函数中访问每个observable的值.会是这样的:
ko.computed(function() {
self.zipCode();
self.userId();
self.isUpdated = true;
});
Run Code Online (Sandbox Code Playgroud)
因此,您依赖于两个observable并设置您的标志.
此外,如果您正在寻找类似"脏"标志的东西,那么您可能会考虑以下内容:http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html.这个想法是你使用一个计算的observable调用对象上的ko.toJS()来解包它的所有可观察对象.
Ser*_*sev 17
你不想复制处理函数的主体吗?将其解压缩到变量.
function CaseAssignmentZipCode(zipCode, userId, isNew) {
var self = this;
self.zipCode = ko.observable(zipCode);
self.userId = ko.observable(userId);
self.isNew = isNew;
self.isUpdated = false;
var handler = function () { self.isUpdated = true; };
self.zipCode.subscribe(handler);
self.userId.subscribe(handler);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11670 次 |
| 最近记录: |