Javascript 敲除装置不工作
我在用敲除法处理地址时真是太可笑了。我的结构类似于:Javascript 敲除装置不工作,javascript,knockout.js,Javascript,Knockout.js,我在用敲除法处理地址时真是太可笑了。我的结构类似于: viewModel.buildings()[0].Address()... 地址为: var Address = function () { var self = this; self.cAddr1 = ko.observable(""); self.cCity = ko.observable(""); ... self.cDisplay = k
viewModel.buildings()[0].Address()...
地址为:
var Address = function () {
var self = this;
self.cAddr1 = ko.observable("");
self.cCity = ko.observable("");
...
self.cDisplay = ko.pureComputed(function () {
return self.cAddr1() + '<br>' + self.cCity() + ...;
}
self.AddressActions = new AddressActions();
}
你知道为什么这样不行吗
结果
所以我对knockout.js还是新手(很明显),但它的工作原理与我想象的有点不同。我基本上使用了公认的答案,但将所有内容都打包成了一个pureComputed。以下是我最后添加的内容:
var Address = function () {
...
self.addressChangeEvent = ko.pureComputed(function () {
return self.cAddr1() + self.cAddr2() + self.cCity() self.cState() + self.cZip();
}
self.addressChangeEvent.subscribe(function () {
self.AddressActions.VerifyAddress(self);
}
}
看起来您正在查找的是
subscribe
而不是computed
self.cAddr1.subscribe(function(){
self.AddressActions.VerifyAddress(self);
});
您可以为每个变量添加订阅,您需要一个事件它看起来像是在寻找
subscribe
而不是computed
self.cAddr1.subscribe(function(){
self.AddressActions.VerifyAddress(self);
});
您可以为每个变量添加订阅,您需要为其添加事件。pure computed的淘汰文档特别指出,当您打算执行某些操作时,不要使用它() 您不应该将纯功能用于计算的可观察对象,该对象意味着在其依赖项发生变化时执行操作 您可以使用常规的计算方法
self.triggerAddressVerify = ko.computed(function () {
console.log('here');
self.cAddr1(); self.cAddr2(); self.cCity(); self.cState(); self.cZip();
self.AddressActions.VerifyAddress(self);
});
但请注意,这将在最初运行一次,并在将来的更改中运行。如果您只想对将来的更改执行操作,那么订阅纯计算的方法会更好。纯计算的淘汰文档特别指出,当您打算执行某些操作时,不要使用它() 您不应该将纯功能用于计算的可观察对象,该对象意味着在其依赖项发生变化时执行操作 您可以使用常规的计算方法
self.triggerAddressVerify = ko.computed(function () {
console.log('here');
self.cAddr1(); self.cAddr2(); self.cCity(); self.cState(); self.cZip();
self.AddressActions.VerifyAddress(self);
});
但请注意,这将在最初运行一次,并在将来的更改中运行。如果您只想对将来的更改执行操作,那么订阅纯计算的方法会更好。纯计算只有在订阅者监听时才会执行。这可能意味着使用它的另一个computed,也可能意味着html中的绑定。pureComputed只有在有订阅者侦听时才会执行。这可能意味着使用它的另一个计算机或html中的绑定。