私はobservableArrayを作成しようとしています(これは、jQueryテンプレートを使用してページの情報を表示します)、そしてボタンのクリック(理想的にはページの読み込みにも関わらず)はajax呼び出しを実行し、アレイ。ここでAjax呼び出しの成功ハンドラを介してobservableArrayを更新するにはどうすればよいですか?
は私が持っているものですが、それが動作していない、それがエラーを与える:
this.propertyDetails is undefined
HTML:
<button data-bind="click: addProperty">Add property</button>
JS:
var viewModel = {
propertyDetails: ko.observableArray([
{name: "1", type: "Unknown"},
{name: "2", type: "Unknown"},
{name: "3", type: "Unknown"},
{name: "4", type: "Unknown"}
]),
addProperty: function() {
//this.propertyDetails.push({name: "New Thing", type: "Unknown"});
$.ajax({
dataType: 'json',
data: 'count=10',
url: 'http://feeds.delicious.com/v2/json/tomleadbetter?callback=?',
success: function (data) {
$.each(data, function(i,item){
console.log(item);
this.propertyDetails.push({name: item.d , type: item.u});
});
}
});
}
};
ko.applyBindings(viewModel);
それは、AJAXを実行しますボタンをクリックすると呼び出されますが、各項目を配列にプッシュしようとすると失敗します。
私を間違えないでください、これは完全に間違っているかもしれません!しかし、この行は、ボタンを押して配列に挿入する作業を行います。
したがって、どのポインタも素晴らしいでしょう。
-HA、私はこれを行うために必要な:\t \t \t \t \t viewModel.propertyDetails.push({名:item.d、タイプ:item.u})。 それはうまくいけば:)。今、ノックアウトの中で、どのようにpageloadでそれを実行するのですか? – Leads
pageloadのコードのどの部分を実行しますか?バインディングを適用するか、ajax呼び出しを実行しますか? – Akkuma
私は何をする必要があると思うのURLを取得する(パラメータを)し、ページの読み込みを実行するajax呼び出しを実行すると、配列でフィードされます。 – Leads