如何将文本框值正确绑定到可观察数组中的模型?

时间:2013-05-29 23:03:31

标签: javascript knockout.js

我有一个具有可观察数组的模型,我可以在文本框中显示数据,但我无法弄清楚如何将其绑定回原始数组。

这是我的工作sample

<ul data-bind='foreach: frameworks'>
    <li>
        <button class='btn' value='pick me'             
            data-bind='text: name, click: $parent.selectFramework'>            
        </button>
    </li>
</ul>
<input type='text' data-bind='value: selectedFramework().name' />
<pre data-bind='text: ko.toJSON($root.selectedFramework, null, 4)'>
</pre>



var Framework = {
    name: ''
};

var App = new function () {
        var self = this;
        self.frameworks = ko.observableArray();
        self.selectFramework = function (item) {
            self.selectedFramework(item);
        };
        self.selectedFramework = ko.observable(Framework);
    };

App.frameworks([{name: 'foo'}, {name: 'bar'}]);

ko.applyBindings(App);

2 个答案:

答案 0 :(得分:0)

该值仅存储在selectedFramework observable中,因此您可以通过App.selectedFramework()访问它。 observable不接受任何变量并使其可观察,它将存储您在内部传递的任何值。如果要更新外部Framework变量,可以在selectFramework函数中执行此操作。

self.selectFramework = function (item) {
        self.selectedFramework(item);
        Framework = item;
    };

答案 1 :(得分:0)

你快到了。您需要在每个框架上创建'name'属性observable。我已更新了您的JsFiddle here

App.frameworks([{
    name: ko.observable('foo')
}, {
    name: ko.observable('bar')
}]);