我不明白为什么这个小代码不能正常工作。请帮忙! 我所尝试的只是将文本框值插入数组中,然后使用绑定(bind)将其显示回来。 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 中尝试过:
最佳答案
首先,您尚未在 JSFiddle 演示中包含 KnockoutJS,因此您的演示无论如何都无法运行。
您遇到的问题是您正在调用tasks.push
。 tasks
本身不是一个数组。 tasks
是一个函数 - 一个 Knockout Observable。为了将值插入其中,我们需要通过调用 tasks().push()
来执行此函数。
正如 James Thrope 所评论的那样,您实际上可以调用 tasks.push
,对此感到抱歉!
最后,您的 ko.applyBindings(...)
永远不会被调用,因为它包含在您的 viewModel
函数中 - 您在任何时候都不会调用该函数。
我强烈建议您阅读 KnockoutJS 自己的交互式教程,网址为 http://learn.knockoutjs.com .
关于javascript - 无法将值插入 observavblearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190856/