在按钮单击时将文本框值添加到可观察数组?

时间:2014-02-13 17:14:41

标签: knockout.js ko.observablearray

我是淘汰赛的新手,我正在尝试将文本框值添加到'item'类型的可观察数组中。该数组在模型中定义。我无法从文本框中打印值。正在打印的值未定义。我无法使文本框值填充'item'对象。

的jsfiddle

http://jsfiddle.net/GSvnh/2817/

以下是我的代码段:

HTML
----
<body>
<div > 
    <ul data-bind="foreach: { data: itemArray}">
    <li data-bind="text: $data.fullName"></li>
</ul>

<input data-bind="value:newItem.firstName" placeholder="FN"></input>
<input data-bind="value:newItem.lastName" placeholder="LN"></input>    
<button data-bind="click: addItem">Add</button>

</div>
</body>

SCRIPT
------

<script>


function item()
{
    var self = this;
    self.firstName = ko.observable();
    self.lastName = ko.observable();
    self.fullName = ko.computed(function() {
        return self.firstName() + "-" + self.lastName();
    });

}
function model(){
    var self1 = this;
    self1.itemArray = ko.observableArray();
    self1.newItem = ko.observable(new item());
    self1.addItem = function(){
      self1.itemArray.push(self1.newItem);
    };

};
var mod = new model();
ko.applyBindings(mod);

</script>

1 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/GSvnh/2828/

您需要在newItem

后面添加parans
<input data-bind="value:newItem().firstName" placeholder="FN"></input>
<input data-bind="value:newItem().lastName" placeholder="LN"></input>    

我还更新了一些其他的东西给你一些方向。