Knockout.js 如何创建一个可观察的array“;“推前”;订阅
我正试图找出在Knockout.js 如何创建一个可观察的array“;“推前”;订阅,knockout.js,Knockout.js,我正试图找出在observearray中出现重复条目的原因。在将项目添加到可观察数组之前,是否有一种订阅查看的方法?使用订阅添加项目后,我可以看到如下内容: var myArr = ko.observablearray(); myArr.subscribe(function (changes) { changes.forEach(function (change) { var item = change.value; var itemStatus = ch
observearray
中出现重复条目的原因。在将项目添加到可观察数组之前,是否有一种订阅查看的方法?使用订阅添加项目后,我可以看到如下内容:
var myArr = ko.observablearray();
myArr.subscribe(function (changes) {
changes.forEach(function (change) {
var item = change.value;
var itemStatus = change.status;
if (itemStatus === "added") {
} else if (itemStatus === "deleted") {
}
});
}, null, "arrayChange");
TL;DR:您可以使用签名
myArray.subscribe(func,null,“beforeChange”)
observearray
只是一个具有额外属性的observed
,因此所有subscribe
功能都正常工作。发件人:
subscribe
函数接受三个参数:callback
是在通知发生时调用的函数,target
(可选)在回调函数中定义this
的值,event
(可选;默认值为“change”)要接收通知的事件的名称
如果您希望在即将更改的可观察对象的值之前得到通知,您可以订阅beforeChange
事件
下面是一个例子:
var ViewModel=function(){
var self=这个,i=1;
self.items=ko.observearray([i++,i++,i++]);
self.addItem=function(){self.items.push(i++);};
self.items.subscribe(函数(oldValue){
警报(“更改自:“+ko.toJSON(oldValue));
},空,“变更前”);
self.items.subscribe(函数(newValue){
警报(“更改为此新值:“+ko.toJSON(newValue));
});
};
应用绑定(新的ViewModel())代码>
添加项
你不能找到所有修改数组的地方并调试它们吗?这正是我需要的。使用此代码,然后能够在第一次运行时看到我的问题。新项目被推到了一个我忽略了的替代原型中。