1

我正在使用可在此处找到的淘汰赛“插件”:

https://github.com/rniemeyer/knockout-classBindingProvider

这是该工具的官方“演示”,其中包含我添加的选择列表:http: //jsfiddle.net/LvwRt/26/

这是具有两个属性的 Item 对象:

var Item = function(name) {
    this.id = ko.observable(name);
    this.name = ko.observable(name);
};

这个淘汰视图模型:

var ViewModel = function(items) {
    var self = this;

    this.editable = ko.observable(true);

    this.items = ko.observableArray(items);

    this.addItem = function() {
        self.items.push(new Item("New"));
    };

    this.deleteItem = function(item) {
        self.items.remove(item);
    };
};

ko.applyBindings(new ViewModel([
    new Item("Pen"),
    new Item("Pencil"),
    new Item("Eraser")
]), document.getElementById("content"));

选择 dom 元素:

<select data-class="selectItem"></select>

selectItem 绑定:

    selectItem: function(context) {
        return {
            options: context.$root.items, 
            value: name, 
            optionsText: 'name'
        }
    }

现在上面的代码可以正常工作了。Knockout 会跟踪项目并正确更新所有内容。

但是,如果我将选择绑定更改为

    selectItem: function(context) {
        return {
            options: context.$root.items, 
            value: id, 
            optionsText: 'name'
        }
    }

我收到以下错误:

Uncaught ReferenceError: id is not defined 

这是损坏代码的链接。 http://jsfiddle.net/LvwRt/27/

4

1 回答 1

1

替换idthis.id

return {
    options: context.$root.items, 
    value: this.id, 
    optionsText: 'name'
}

演示

于 2013-09-15T00:12:45.487 回答