我有一束物体在我的视图模型以下结构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