Javascript KnockoutJS将复选框可见性绑定到正在选中或具有特定值的复选框
因此,我有一个复选框,并尝试实现以下逻辑来设置可见性: 如果选中复选框或复选框的值低于指定的数字,请将visible设置为true 如果该值超过测试值且复选框未选中,则将其隐藏 以下是我到目前为止的情况:Javascript KnockoutJS将复选框可见性绑定到正在选中或具有特定值的复选框,javascript,checkbox,knockout.js,Javascript,Checkbox,Knockout.js,因此,我有一个复选框,并尝试实现以下逻辑来设置可见性: 如果选中复选框或复选框的值低于指定的数字,请将visible设置为true 如果该值超过测试值且复选框未选中,则将其隐藏 以下是我到目前为止的情况: <input type="checkbox" data-bind="visible: $data.Cost <= $root.itemLevel() - $root.totalEnchantLevelsUsed() || checked" /> 但这告诉我“项”是未定义的。
<input type="checkbox" data-bind="visible: $data.Cost <= $root.itemLevel() - $root.totalEnchantLevelsUsed() || checked" />
但这告诉我“项”是未定义的。当我尝试显式传递$data时,会收到一条关于ko.computed和必须设置“write”访问的错误消息
有没有一个相对简单的方法可以做到这一点,我只是忽略了?诚然,我对击倒并不十分熟悉。这里有一些类似于您尝试做的事情: Html:
我希望不必走这条路,因为这意味着必须重做一些我已经实现的代码,而这只是一个“很好拥有”的特性。但是,我想这就是事实。谢谢
this.isChecked = ko.computed ( function (item) {
console.log('item', item); // PURELY TO TEST THE VALUE
}
<div data-bind="foreach:items">
<label data-bind="visible: isAllowedInWorkflow">
<input data-bind="value: val" type="checkbox" />
This checkbox has value
<span data-bind="text:val"></span>
</label>
</div>
ko.applyBindings({
items: [createItem(10), createItem(20), createItem(30) ]
})
function createItem(val) {
var _item = {
val: val
,isSelected: ko.observable(false)
};
_item.isAllowedInWorkflow = ko.computed(function() {
//notice the order is importeant since you always want isSelected to be triggered for the
//computed to calculate its dependencies
return !_item.isSelected() && val > 10;
});
return _item;
}