Knockout.js 复选框非布尔值?

Knockout.js 复选框非布尔值?,knockout.js,Knockout.js,我举了以下例子: is_checked属性可以有两个值:Yes或No。如果值为Yes,则应选中复选框。单击保存的链接时,应根据是否选中复选框为属性指定Yes或No 在knockoutjs中您将如何做到这一点?您的第一个问题是缺少绑定上的括号: <input type="checkbox" value="Yes" data-bind="checked: is_checked() == 'Yes'"/> 及 会有用的。取消选中该框将更新选中的值。如果对您来说是/否而不是真/假确实很重

我举了以下例子:

is_checked属性可以有两个值:Yes或No。如果值为Yes,则应选中复选框。单击保存的链接时,应根据是否选中复选框为属性指定Yes或No


在knockoutjs中您将如何做到这一点?

您的第一个问题是缺少绑定上的括号:

<input type="checkbox" value="Yes" data-bind="checked: is_checked() == 'Yes'"/>


会有用的。取消选中该框将更新选中的值。如果对您来说是/否而不是真/假确实很重要,那么您必须编写一些代码将真/假检查状态转换为是/否。有几种方法可以实现这一点。我会尝试一个可观测的计算方法。请参见此处:

您的第一个问题是缺少绑定上的括号:

<input type="checkbox" value="Yes" data-bind="checked: is_checked() == 'Yes'"/>


会有用的。取消选中该框将更新选中的值。如果对您来说是/否而不是真/假确实很重要,那么您必须编写一些代码将真/假检查状态转换为是/否。有几种方法可以实现这一点。我会尝试一个可观测的计算方法。请参见此处:

除了计算之外的另一种方法是使用“订阅”监听值的更改。例如,选中绑定到,并使该值为true或false。然后订阅该可观察对象,并根据需要将另一个属性设置为Yes/No。请看这里的小提琴:

HTML


除了computed之外的另一种方法是使用“subscribe”监听值的更改。例如,选中绑定到,并使该值为true或false。然后订阅该可观察对象,并根据需要将另一个属性设置为Yes/No。请看这里的小提琴:

HTML


您是否链接到了错误的JSFIDLE?这似乎与您的问题无关。您是否链接到了错误的JSFIDLE?这似乎与你的问题无关。
data-bind="checked: is_checked"
<input type="checkbox" data-bind="checked: checkedvals.is_checked"/>
<label>Test</label><br/>

<pre data-bind="text:displayJS">
</pre>​
var viewModel = (function() {
    var self = this;
    self.checkedvals = {
        is_checked : ko.observable(true),
        is_checked_val : ko.observable("Yes")
    };
    self.checkedvals.is_checked.subscribe(function(){
        self.checkedvals.is_checked_val(self.checkedvals.is_checked() ? "Yes" : "No");
    });

    self.displayJS = ko.computed(function() {
        return JSON.stringify(ko.toJS(checkedvals), null, 2);
    });
})();
ko.applyBindings(viewModel);​