Javascript 剔除视图模型可观测变量与计算变量相结合
我一直在使用Knockout.js进行数据绑定。但是,我遇到了这个问题。事实上,这是我想做的一个改进 现在我正试着这么做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[
- 我的虚拟机中有一个可观察的变量
- 我有一个关于每个可观测变量的数学方程
- 每次更新模型时,在模型到达视图之前,应使用公式计算变量,并在视图上设置结果
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是计算的持有者
在小提琴的例子中,它可能没有多大区别。我的应用程序逻辑处理1600个变量,这些变量将以10秒的间隔更新。所以,我应该注意内存消耗。你能在JSFIDLE或stack snippet这样的工作示例中重现这个问题吗?听起来你想要一个,但是是的-正如@Tanner所说,更多信息会很有用。@JamesThorpe更新了我的问题。你现在能看一下吗。