是否有更好的(内置?)方式来混合observableArray和关联数组?
viewModel = {
a: ko.observableArray(),
a_assoc: {},
add_item: function(i) {
if (typeof this.a_assoc[i] == 'undefined') {
this.a.push(i);
this.a_assoc[i]=1;
}
}
}
viewModel.add_item('bla');
Run Code Online (Sandbox Code Playgroud)
通常,你会在Knockout中做这样的事情:
var viewModel = {
a: ko.observableArray(["a","b","c","d"]),
add_item: function() {
this.a.push("new" + this.a().length);
}
};
viewModel.a_assoc = ko.dependentObservable(function() {
var result = {};
ko.utils.arrayForEach(this.a(), function(item) {
result[item] = 1;
});
return result;
}, viewModel);
Run Code Online (Sandbox Code Playgroud)
因此,您有一个dependentObservable将您的数组映射到一个对象.请注意,每次更新原始数组时,都会重建该对象.因此,它的效率低于您帖子中的方法,但除非您的对象非常大,否则会导致性能问题.
此处示例:http://jsfiddle.net/rniemeyer/PgceN/
| 归档时间: |
|
| 查看次数: |
6455 次 |
| 最近记录: |