我无法理解为什么这个小代码不能正常工作。请帮忙! 我尝试的是将文本框值推送到数组中,然后使用绑定将其显示回来。 HTML代码是:
<div>
Add Task:<input type="text" placeholder="abcd" data-bind="value:viewModel.newTask"/>
<input type="button" value="add" data-bind="click:viewModel.addTask" />
</div>
<div data-bind="foreach:viewModel.tasks" ></div>
js脚本是:
var viewModel = function (items) {
var self = this;
self.newTask = ko.observable();
self.tasks = ko.observableArray(items);
self.addTask = function () {
self.tasks().push(self.newTask());
self.newTask(" ");
}
ko.applyBindings(viewModel(["alpha","beta","gamma"]));
}
我在JSFiddle也试过了:
答案 0 :(得分:2)
首先,您还没有在JSFiddle演示中包含KnockoutJS,因此无论如何您的演示都无法正常工作。
您遇到的问题是您正在调用 tasks.push
。 tasks
本身并不是一个数组。 tasks
是一个函数 - 一个Knockout Observable。为了将值推入其中,我们需要通过调用tasks().push()
来执行此函数。
正如James Thrope评论的那样,您实际上可以致电tasks.push
,对此感到抱歉!
最后,ko.applyBindings(...)
永远不会被调用,因为它包含在您的viewModel
函数中 - 您在任何时候都不会调用它。
我强烈建议您通过http://learn.knockoutjs.com获取KnockoutJS自己的互动教程。