Javascript 剔除视图模型可观测变量与计算变量相结合

Javascript 剔除视图模型可观测变量与计算变量相结合,javascript,data-binding,knockout.js,eval,Javascript,Data Binding,Knockout.js,Eval,我一直在使用Knockout.js进行数据绑定。但是,我遇到了这个问题。事实上,这是我想做的一个改进 现在我正试着这么做 我的虚拟机中有一个可观察的变量 我有一个关于每个可观测变量的数学方程 每次更新模型时,在模型到达视图之前,应使用公式计算变量,并在视图上设置结果 目前,我用三个变量来完成我的工作 var variable = 'x01'; //vm - is object of my view model. vm[variable] = ko.observable(24.8); vm[

我一直在使用Knockout.js进行数据绑定。但是,我遇到了这个问题。事实上,这是我想做的一个改进

现在我正试着这么做

  • 我的虚拟机中有一个可观察的变量
  • 我有一个关于每个可观测变量的数学方程
  • 每次更新模型时,在模型到达视图之前,应使用公式计算变量,并在视图上设置结果
目前,我用三个变量来完成我的工作

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
欢迎任何其他更好的可能性或改进建议

编辑:添加

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

  • var1、var2是变量保持器
  • var1_computed,var2_computed是计算的持有者
如何在数据保持器和计算中仅使用一组变量(var1、var2/var1_computed、var2_computed),并避免使用多个变量


在小提琴的例子中,它可能没有多大区别。我的应用程序逻辑处理1600个变量,这些变量将以10秒的间隔更新。所以,我应该注意内存消耗。

你能在JSFIDLE或stack snippet这样的工作示例中重现这个问题吗?听起来你想要一个,但是是的-正如@Tanner所说,更多信息会很有用。@JamesThorpe更新了我的问题。你现在能看一下吗。