Knockout ViewModel可观察变量与计算结合

时间:2014-12-02 06:43:29

标签: javascript data-binding knockout.js eval

我正在玩Knockout.js进行数据绑定很长一段时间。但是,坚持这个问题。实际上,这是我想要做的一项改进。

现在我正在尝试这样做,

  • 我的VM中有一个可观察的变量
  • 我为每个可观察变量
  • 设置了数学公式
  • 每次更新模型时,在到达视图之前,应使用公式计算变量并在View上设置结果。

目前,我正在服用三个变量来完成我的工作。

var variable = 'x01'; 
//vm - is object of my view model.
vm[variable] = ko.observable(24.8);
vm["+variable+"_conversion"] = "X * 10 - 248"; 
vm[""+variable+"_computed"] = ko.computed(function() {
    val_ac = vm[variable]();
    ac = vm[""+variable+"_conversion"];
    var X = val_ac;
    return eval(ac);
},vm);

更新型号:

vm[variable] = 25;

因为,我的所有观点都是自定义处理程序。我的数据如下:

value = vm[""+variable+"_computed"]();

但是,这里我使用两个变量(虽然第二个不会保存数据但功能)。如何将上述三个变量合并为一个?

可能是这样的;

vm[variable] = ko.computed(function(X){
    var ac="X * 10 - 276";
    return eval(ac);
},vm);
vm[variable](26);   // --this should set data to model and trigger observers 
val = vm[variable]; // --this should get data to set to view

欢迎任何其他更好的可能性或改进建议!

修改:添加Fiddle Link

上述链接中的我的问题如下:

  • var1,var2是变量持有人
  • var1_computed,var2_computed是计算所有者

如何仅对数据持有者和计算使用一组变量(var1,var2 / var1_computed,var2_computed)并避免使用多个变量。

在小提琴例子中可能没什么区别。我的应用程序逻辑处理1600个变量,这些变量将以10秒的间隔更新。所以,我应该对内存消耗做出谨慎的改变。

0 个答案:

没有答案