我有一束物體在我的視圖模型以下結構Knockout我可以繞過這個計算循環嗎?
我有一個底層數組填充有具有在ko.observable項對象
例:選擇= [{腿:{'0 ':ko.observable(12)}},{腿:{'0':ko.observable(0)}}]
我想實現的是,當用戶點擊複選框時,應該切換該Runner的選定值。發生這種情況現在,當我也想更新緩存值,以反映選擇狀態的運動員
緩存用作二進制存儲12 == 1100 ==複選框3和4被檢查
現在,所有的我可以開始工作沒有問題,我顯然甚至不需要使Cache可觀察。
但是,我也需要以編程方式更改緩存值,我希望複選框自動反映這些更改。
下面是sorta的一些作品,但創建了一個Loop,它可以很好地處理,但其結果不可靠,這會降低速度。
如何創建此綁定設置?
function Runner(name, odds, race, leg, post) {
var runner = {
Name: name,
Odds: odds,
Post: post,
Race: race,
Leg: leg,
Cache: selections[race].Legs[leg],
Selected: ko.observable(false),
Enabled: ko.observable(true),
Valid: true
};
runner.Check = ko.computed(function() {
if (!this.Enabled.peek() || !this.Valid) return;
var checked = this.Selected();
var cache = this.Cache();
if (checked) {
this.Cache(cache | 1 << this.Post);
} else {
this.Cache(cache & ~(1 << this.Post));
}
}, runner);
return runner;
}
編輯
<input type="checkbox" data-bind="checked: Selected, enable: Enabled"/>
我無法弄清楚Check計算是如何與跑步者相關的。你能告訴我們你的標記或創建一個小提琴演示嗎? – CodeThug 2013-04-20 18:06:34
用戶點擊複選框 - >選定的更改匹配 - >檢查啓動,因爲選擇改變 - >在緩存設置適當的位標誌 - >(從這裏循環開始)調用檢查,因爲緩存改變等等......哦,我想我可以添加一行說:檢查比特值,如果它與Selected已經相同,那麼什麼也不做,這將退出循環是嗎? – Zholen 2013-04-20 18:50:05