Я пытаюсь добавить новый элемент в наблюдаемый массив при нажатии кнопки. Я в значительной степени следую этому примеру на сайте knockout.js:
http://knockoutjs.com/examples/betterList.html
Вот соответствующий HTML:
<form data-bind="submit:addItem">
<input id="comment" data-bind="value:itemToAdd.comment, valueUpdate: 'afterkeydown'" />
<input type="submit" value="Save contact" />
</form>
Как видите (в этом отличие от примера), у моего "itemToAdd" будет несколько свойств, одним из которых является "comment". Поэтому я пытаюсь связать это так: «value: itemToAdd.comment» (я также пытался «value: itemToAdd (). Comment»). Но это не похоже на работу. Вот соответствующая часть моей модели зрения:
var viewModel = {
contactHistory: [{comment: 'test', date: '12/12/2011'}, {comment: 'test2', date: '12/11/2011'}],
itemToAdd: new ko.observable({ comment: 'dd', date: '' }),
addItem: function () {
alert(this.itemToAdd().comment);
if (this.itemToAdd().comment != "")
{
this.contactHistory.push(this.itemToAdd());
}
}
}
В предупреждении всегда отображается «dd», поэтому itemToAdd, по-видимому, неправильно привязан к текстовому полю. Кто-нибудь знает, что я делаю не так?