Javascript 无法将值推送到observablearray中
我无法理解为什么这个小代码不能正常工作。请帮助! 我所做的只是将textbox值推送到数组中,然后使用绑定将其显示回来。 HTML代码是:Javascript 无法将值推送到observablearray中,javascript,html,knockout.js,Javascript,Html,Knockout.js,我无法理解为什么这个小代码不能正常工作。请帮助! 我所做的只是将textbox值推送到数组中,然后使用绑定将其显示回来。 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>
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>
我在JSFIDLE中也尝试过:
首先,您的JSFIDLE演示中没有包含KnockoutJS,因此您的演示无论如何都无法工作 您遇到的问题是您正在调用
任务。按<代码>任务
本身不是数组<代码>任务
是一个函数-可以观察到的淘汰。为了将值推入其中,我们需要通过调用tasks().push()
来执行此函数
正如James Thrope所评论的,您实际上可以调用任务。按,对此表示抱歉
最后,您的ko.applyBindings(…)
永远不会被调用,因为它包含在您的viewModel
函数中—您在任何时候都不会调用它
我强烈建议您阅读KnockoutJS的互动教程,该教程位于。您的JSFIDLE演示中没有包含Knockout.JS。-实际上,如果在底层数组上调用push
,除非手动触发通知,否则knockout实际上不会看到更改afterwards@JamesThorpe直到!我一直在用一个值hassmutated
-我想我会检查我的最新项目,并替换所有的实例!事实上,如果您真的要使用ObservaleArray(内部称为valuHasMuated),则无需使用valuHasMuated
。但我会做一些事情,比如我把耳环放平,然后我会把它推到后面,我称之为valueHasMuated。你可以从我在这个链接中的回答中找到我要说的
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"]));
}