【发布时间】:2017-06-22 08:09:12
【问题描述】:
我正在使用 Knockout JS 执行一些需要在我的视图中显示的基本价格计算。
我传入一个 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);
【问题讨论】:
标签: magento knockout.js magento-2.0