javascript - knockout.js: No concat on observableArray -
only starting knockout.js, running trouble when trying make computed
method based on 2 different observablearray
s
using documentation on knockout.js' website, i've created following 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; }); };
doing throws error of "uncaught typeerror: object #<error> has no method 'concat'
.
i know there function called arraypushall
, it's destructive function alter original observablearray
. (i don't think want).
is there clean way achieve i'm trying do? or have make 2 different calls arrayforeach
, 1 each array?
change:
this.products().concat(this.products2()),
to:
self.products().concat(self.products2()),
inside totalamount ko.computed function.
this
in context of computed refers global object rather view model. need use self
variable assigned correct this
value earlier.
working example - http://jsfiddle.net/55kzp/
Comments
Post a Comment