每次选中复选框时,我都希望在函数中指定一个URL。但是,当取消选中checkBox时,我还希望将URL重新分配给它的初始值。我能够从以下thread创建下面的代码,但是当我取消选中该框时,不会重新分配URL。对不起,我是KnockoutJS和JavaScript的新手。
HTML
<input type="checkbox" name="myCheckBox" data-bind="checked:isChecked, click: setUrl">Search Supplier<br>
JS
searchShippingCodesUrl = '/Parteners/Search';
...
...
ischecked: ko.observable(false),
setUrl: function () {
searchShippingCodesUrl = '/Suppliers/Search';
return true;
},
感谢您的时间。
答案 0 :(得分:3)
如果您需要区分复选框是通过点击还是内部设置更改状态,请仅使用复选框上的click
绑定。 checked
绑定会为您捕获视图的状态,因此您可以在viewmodel中使用它。要在变化时采取行动,你subscribe到observable(我从 dfperry 的例子中借用变量):
ischecked.subscribe(function (newValue) {
searchShippingCodesUrl = newValue ? supplierSearch : partnerSearch;
});
答案 1 :(得分:1)
您需要检查setUrl函数中的isChecked
以获得切换效果:
var partnerSearch = '/Partners/Search',
supplierSearch = '/Suppliers/Search';
searchShippingCodesUrl = partnerSearch;
...
ischecked: ko.observable(false),
setUrl: function () {
searchShippingCodesUrl = (ischecked() ? supplierSearch : partnerSearch);
return true;
}