【发布时间】:2016-12-31 00:38:06
【问题描述】:
在我的 HTML 页面中有 3 个输入。使用用户输入,我希望使用 KnockoutJS 更新我的页面元素。这是我写的脚本:
$(document).ready(function(){
function Task(data){
this.goal=ko.observable(data.goal);
this.type=ko.observable(data.type);
this.date=ko.observable(data.date);
console.log("Data"+ " " + data.goal);
}
var myViewModel=function(tasks){
var self=this;
self.tasks=ko.observableArray([{goal:"abc", type:"Intermediate", date:"12/13/1122"}]);
self.newGoalText=ko.observable("");
self.newTypeText=ko.observable("");
self.newDateText=ko.observable("");
self.addTask=function(){
self.tasks.push(new Task({goal:this.newGoalText(),type:this.newTypeText(), date:this.newDateText()}));
console.log(tasks);
self.newGoalText("");
self.newTypeText("");
self.newDateText("");
}//addTask function
}//viewModel
ko.applyBindings(new myViewModel())
});
console.log 告诉我这些值是按预期从用户那里获取的。但是,tasks 数组上的“push”方法似乎根本没有效果。请指导我。
【问题讨论】:
-
问题可能出在您的 html 中,因此如果您发布它会有所帮助。我测试了你的代码(没有改变任何东西),它与我提供的标记一起工作。见jsfiddle.net/ffojupuf
-
@Adrian,感谢您的帮助。我的 HTML 代码与您的相似,我没有发现 wrt 绑定有太大区别。不知道出了什么问题!我使用“值”而不是“文本输入”。这是唯一的区别。
标签: javascript jquery html arrays knockout.js