计算的可观察值不根据复选框值更新
computed observable not updating based on check box values
希望你一切顺利。
我目前正在研究 UI 与 KnockoutJS 的接口,我想完成以下任务:
在我的 UI 中,我从 JSON 文件 中获得了一个 组件列表(一些复选框基于 bool 值,一些基于数字输入关于 int 值等)。有些组件依赖于其他组件,例如:
- 启用自定义汇率(复选框)
- 自定义汇率(数字输入)
JSON 文件中的 自定义费率参数 有一个名为 dependencies 的字段,我们在其中定义了一个条件字符串 ( "parent1 && parent2")。
我的想法是使用参数可观察数组值构建一个 isVisible 计算可观察对象。
viewModel.isVisible = ko.computed(function(){
var expr = "Han && Solo";
var parentVars = expr.split(' && ');
var result = ko.observable(true);
for(var i = 0; i < parentVars.length; i++){
let element = viewModel.getParamByName(parentVars[i],viewModel.paramsArray());
if(element != 'not found'){
result = result && element.isVisible();
}
}
return result;
});
我尝试在这里实现这个想法:https://jsfiddle.net/bignacio/y32g4801/62/
但计算结果不具有约束力。
如何解决这个问题?有没有更好的方法来处理这个问题?
谢谢你的时间。
计算的可观察值不应 return 可观察值。它应该只是 return 一个值。因此,第四行应该是:
var result = true;
计算的 observable 正在检查每个匹配项目的 isVisible
属性,但这些项目未正确绑定到复选框。您应该使用 checked
绑定,而不是使用 value
绑定:
<input type="checkbox" data-bind="checked: $data.isVisible">
希望你一切顺利。
我目前正在研究 UI 与 KnockoutJS 的接口,我想完成以下任务:
在我的 UI 中,我从 JSON 文件 中获得了一个 组件列表(一些复选框基于 bool 值,一些基于数字输入关于 int 值等)。有些组件依赖于其他组件,例如:
- 启用自定义汇率(复选框)
- 自定义汇率(数字输入)
JSON 文件中的 自定义费率参数 有一个名为 dependencies 的字段,我们在其中定义了一个条件字符串 ( "parent1 && parent2")。
我的想法是使用参数可观察数组值构建一个 isVisible 计算可观察对象。
viewModel.isVisible = ko.computed(function(){
var expr = "Han && Solo";
var parentVars = expr.split(' && ');
var result = ko.observable(true);
for(var i = 0; i < parentVars.length; i++){
let element = viewModel.getParamByName(parentVars[i],viewModel.paramsArray());
if(element != 'not found'){
result = result && element.isVisible();
}
}
return result;
});
我尝试在这里实现这个想法:https://jsfiddle.net/bignacio/y32g4801/62/
但计算结果不具有约束力。
如何解决这个问题?有没有更好的方法来处理这个问题?
谢谢你的时间。
计算的可观察值不应 return 可观察值。它应该只是 return 一个值。因此,第四行应该是:
var result = true;
计算的 observable 正在检查每个匹配项目的 isVisible
属性,但这些项目未正确绑定到复选框。您应该使用 checked
绑定,而不是使用 value
绑定:
<input type="checkbox" data-bind="checked: $data.isVisible">