0
我使用Knockout JS來執行一些基本的價格計算,這些計算需要在我的視圖中顯示。在knockout JS(Magento 2)中使用可觀察數組
我傳入一個key => value
數組作爲配置,然後我的JavaScript模型對數組進行一些計算並更新它。
所以我可以更新前端,我使用ko.observableArray()
。
我的模板文件看起來像這樣:
<span>Price $<span data-bind="text: priceCalculator.prices()['<?php echo $block->getSomeKey ?>']"></span></span>
而且我PriceCalculator模式是這樣的:
this.priceMap = priceMap; // from config
this.prices = ko.observableArray();
this.setObservablePrices();
this.setObservablePrices = function() {
var self = this;
$.each(this.priceMap, function(key, value) {
self.prices()[key] = self.doSomePriceCalc(value);
});
return this;
};
的問題是,我的模板只顯示變量集的第一個實例在我陣列。 IE瀏覽器,如果我再次運行this.setObservablePrices();
並且價格更新它不會反映在我的模板文件中。我注意到Knockout JS說要使用self.prices()。push(value)但是我不知道我是否可以在不丟失數組鍵的情況下做到這一點?
我嘗試以下,但它創建我不想以3D陣列:
var price = {};
price[key] = value;
this.prices().push(price);
啊,一個observableArray僅觀察數組中的元素,並且當元件被添加或移除將只觸發通知。 – Navarr