我有一个栏在子栏中显示varibale数量的值。酒吧的总宽度是固定的。每当一个值发生变化时,我需要重新计算所有柱的宽度,作为所有值的新总和的比例。从Knockout.JS访问外部值observableArray项目的构造函数
子杆模板基于knockout.js观察到阵列上:
<div data-bind="foreach: subBars">
<div data-bind="style: { width: (width() + 'px'), backgroundColor: color }"></div>
</div>
数组本身经过初始宽度和一个值到subBars:
this.subBars = ko.observableArray ([
new subBar(initialWidth01, color01);
new subBar(initialWidth02, color02);
]);
每当值对于子条更改,所有值的总和计算为
this.subBarsTotal = ok.computed... (this works)
w在视图模型中。
的subBar功能,视图模型之外,就是:
function subBar (initialWidth, color) {
var self = this;
self.initialWidth = initialWidth;
self.width = ok.computed(function(){
var adjustedWidth = self.initialWidth()/subBarsTotal() * widthOfBar;
return adjustedWidth;
}
self.color = color;
}
但是很多我试试,我还没有找到一种方式来获得在subBarsTotal的价值。
我在这里没有看到什么?
(编辑:错字) (编辑:全码) (编辑:返朴归真 - 整个代码不
你在哪里定义了subBar?你的计算函数必须是ko.computed而不是ok.computed。 (可能是一个错字) – Luffy 2012-08-03 11:52:08
纠正了错字。 SubBar被定义为一个常规函数。 – gzost 2012-08-03 12:42:33
我编辑我的答案,并给工作jsfiddle链接解决您的问题。 – Luffy 2012-08-04 11:57:21