我正在使用 ko.mapping 插件来映射来自 ajax 请求的数据。 设置 key 我希望在这种情况下不会触发订阅,但它总是会引发;我不明白为什么。提前谢谢。
var arraySource = [{ Prop: 1, Prop2: 1 }, { Prop: 2, Prop2: 2 }];
var mappedArray = ko.observableArray([]);
mappedArray.subscribe(function (data) {
console.log(data);
});
window.setInterval(function () {
ko.mapping.fromJS(arraySource, {
key: function (data) {
return data.Prop;
}
}, mappedArray);
}, 3000);
最佳答案
根据文档中的评论,听起来将第三个参数传递给 .fromJS
将覆盖触发通知的数组的属性。
ko.mapping.fromJS(data, {}, someObject); // overwrites properties on someObject
来源:http://knockoutjs.com/documentation/plugins-mapping.html
在knockout.mapping.js ln 627中,数组内容被替换,从而触发订阅通知。
mappedRootObject(newContents);
关于javascript - ko.mapping observableArray 始终触发订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24699722/