Knockout checkValue不起作用

时间:2013-12-03 20:56:01

标签: knockout.js

knockout documentation中有一个checkedValue绑定示例,可用于抓取$data对象而不是复选框的值。一个版本的视图模型可以工作,而另一个版本的版本则没有。这是一个错误吗?

两种情况都使用以下HTML:

<!-- ko foreach: items -->
    <input type="checkbox" data-bind="checkedValue: $data, checked: $root.chosenItems" />
    <span data-bind="text: itemName"></span><br>
<!-- /ko -->

工作视图模型如下所示:

var viewModel = {
    items: ko.observableArray([ { itemName: 'Choice 1' }, { itemName: 'Choice 2' }]),
    chosenItems: ko.observableArray()
};

ko.applyBindings(viewModel);

示例:http://jsfiddle.net/v2HAg/

类似的断开视图模型如下所示:

function viewModel() {
    this.items = ko.observableArray([ { itemName: 'Choice 1' }, { itemName: 'Choice 2']);
    this.chosenItems = ko.observableArray();
}

ko.applyBindings(new viewModel());

示例:http://jsfiddle.net/dPBeA/

2 个答案:

答案 0 :(得分:1)

在你的小提琴http://jsfiddle.net/dPBeA/中你已经包括了Knockout 3.x和Knockout 2.x

当我删除对Knockout 2.x的引用时,代码对我有效。确保你只包括Knockout 3.x

一旦你这样做,你的代码就可以了。

function viewModel() {
    this.items = ko.observableArray([ { itemName: 'Choice 1' }, { itemName: 'Choice 2']);
    this.chosenItems = ko.observableArray();
}

ko.applyBindings(new viewModel());

答案 1 :(得分:0)

如果您想命名模型和相关函数,这也有效:

http://jsfiddle.net/dPBeA/1/

(function (testing, $, undefined) {
    function viewModel() {
        var self = this;
        self.items = ko.observableArray([{
            itemName: 'Choice 1'
        }, {
            itemName: 'Choice 2'
        }]);
        self.chosenItems = ko.observableArray();
    }

    testing.ViewModel = viewModel;
}(window.testing = window.testing || {}, jQuery));

ko.applyBindings(new testing.ViewModel());