javascript - 无法将值插入 observavblearray

标签 javascript html knockout.js

我不明白为什么这个小代码不能正常工作。请帮忙! 我所尝试的只是将文本框值插入数组中,然后使用绑定(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 中尝试过:

http://jsfiddle.net/Rakz_1221/m3rwupmz/1/

最佳答案

首先,您尚未在 JSFiddle 演示中包含 KnockoutJS,因此您的演示无论如何都无法运行。

您遇到的问题是您正在调用tasks.pushtasks 本身不是一个数组。 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/

相关文章:

html - CSS中图片显示不当

javascript - 从 C# 项目页面导航到 Javascript 项目页面 Windows Phone 8.1

javascript - InnerHTML 问题

html - 垂直对齐容器中的一行文本

javascript - 当鼠标悬停在 Jssor 中的缩略图菜单上时显示标题

javascript - 如何在knockout js中的两个 View 模型之间交换值

javascript - 如何将回调传递给全局 onerror 方法?

javascript - 解析javascript获取页面标题的html结果

javascript - 在一个数据绑定(bind)中应用 knockout if 和选项绑定(bind)在一起

javascript - KnockOut 货币绑定(bind)处理程序