31
'observableArray'の 'price'フィールドの合計を計算しようとしています。私は、これまでに次のコードを持っている:私はこれを実行しようとするとko.utils.arrayForEachを使用してobservableArrayを反復する
(function(){
function objFeatures(name,price) {
return {
name: ko.observable(name),
price: ko.observable(price),
removeFeatures: function() {
appViewModel.features.remove(this);
}
}
}
var appViewModel = {
features: ko.observableArray([
new objFeatures("Feature1", 20),
new objFeatures("Feature2", 20)
]),
grandTotal: ko.computed(function() {
var total = 0;
ko.utils.arrayForEach(this.features(), function() {
total += this.price();
})
return total;
})
};
ko.applyBindings(appViewModel);
}());
は、私は「エラー:this.featuresは関数ではありません」を取得放火魔コンソールで。
私は間違っていますか?
を私が最初に行ってきましたアプローチ、今私はアクセス 'this.price()' – nthapa13
最後に私は(私は絶対にどのようにこれがうまくいかなかった)使用します--- 'var self = this; $ .each(self.features()、function(){ total + = this.price(); });しかし、ko.utils.arrayForEachを使用してもまだ動作しません。 – nthapa13
@ Nthapa13私はあなたがその部分で使っていた構文に気付かなかった。上記の答えを更新して、 'ko.utils.arrayForEach'で指定した関数がその項目を最初の引数として受け取ると、関数で' this'を使う必要はありません。 –