KnockoutJS - 选中复选框与未选中时如何重新分配URL

时间:2016-01-22 16:31:14

标签: asp.net checkbox knockout.js asp.net-mvc-5

每次选中复选框时,我都希望在函数中指定一个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;            
        },

感谢您的时间。

2 个答案:

答案 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;            
}