Kip*_*pie 2 javascript knockout.js
只能从knockout.js开始,但在尝试computed基于2个不同的observableArrays 创建方法时已经遇到了一些麻烦
使用knockout.js网站上的文档,我创建了以下viewmodel:
var Cart = function() {
var self = this;
self.Products = ko.observableArray([]);
self.Products2 = ko.observableArray([]);
self.Messages = ko.observableArray([]);
self.TotalAmount = ko.computed(function() {
var result = 0;
ko.utils.arrayForEach(
this.Products().concat(this.Products2()),
function(item) {
result+=item.AmountIncludingVAT();
}
);
return result;
});
};
Run Code Online (Sandbox Code Playgroud)
这样做会引发错误"Uncaught TypeError: Object #<error> has no method 'concat'.
我知道有这个函数叫arrayPushAll,但它是一个破坏性的功能,会改变原来的observableArray.(我不认为这是我想要的).
是否有任何干净的方法来实现我想要做的事情?或者我必须进行两次不同的呼叫arrayForEach,每个阵列一次?
更改:
this.Products().concat(this.Products2()),
Run Code Online (Sandbox Code Playgroud)
至:
self.Products().concat(self.Products2()),
Run Code Online (Sandbox Code Playgroud)
在TotalAmount ko.computed函数内.
this在您计算的上下文中引用全局对象而不是视图模型.因此,您需要使用先前self分配了正确this值的变量.
工作实例 - http://jsfiddle.net/55kZp/
concat 对我不起作用..我做到了 push
self.Products.push.apply(
self.Products, self.Products2()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8573 次 |
| 最近记录: |