HTMLページには3つの入力があります。ユーザー入力を使用して、KnockoutJSを使用してページの要素を更新したいと考えています。これは私が書いたスクリプトです: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は値がユーザーから期待どおりに取得されていることを示しています。しかし、タスク配列上の "push"メソッドはまったく効果がないようです。私を案内してください。
問題はあなたのhtmlにあるかもしれないので、あなたがそれを投稿すると役に立つでしょう。私はあなたのコードをテストし(何も変更していない)、私が提供したマークアップで動作しました。あなたの助けを借りて@Adrian、https://jsfiddle.net/ffojupuf/ – Adrian
をご覧ください。私のHTMLコードはあなたのものと似ていて、私は違いwrtバインディングの多くを見つけられませんでした。何が間違っていたのだろうか?私は "textInput"の代わりに "value"を使用しました。それが唯一の違いでした。 –