簡體   English   中英

從ajax提取數據到observableArray

[英]knockout push data from ajax to observableArray

我想將數據從ajax推送到淘汰的observableArray,但這給了我一個錯誤:

初始化可觀察數組時傳遞的參數必須是數組,為null或未定義。

 efine(['uiComponent', 'ko', 'jquery'], function (Component, ko, jquery) { return Component.extend({ initialize: function () { this._super(); /* State and cities */ this.selectCity(); }, selectCity: function () { var myViewModel = {}; state = ko.observableArray([]); jquery.ajax({ url: 'http://127.0.0.1/magento/hamechio/region.php', type: "GET", dataType: "json", success: function(data) { myViewModel = data; state.push(data); } }); console.log(state); } }); }); 

據我所知,這條線應該改變。

 state = ko.observableArray([]);

對此

var state = ko.observableArray();

這是一個ajax作用域查詢。

您可以使用“ var”。

像這樣:

var state = ko.observableArray([]);

我是否可以建議閱讀包含大量工作示例的文檔: https : //knockoutjs.com/documentation/observableArrays.html

首先,您的視圖模型是構建所有程序的對象。 該對象包含所有要顯示的數據(作為可觀察到的可觀察屬性“方法”)和要接收的命令(功能)。 因此,您需要定義視圖模型以包含應用程序需要做的所有事情:

var viewModel = {
    //Bindings
    state = ko.observableArray();
}

現在,您可以寫入viewModel.state()

如果數據是數組,並且您不想跟蹤對數據項的更改:

viewModel.state(data);

或一次推一個:

data.foreach(function(el){ viewModel.state.push(el); });

如果要跟蹤對每個項目的屬性的更改,則需要使用第二種方法,並將每個元素轉換為由ko.observable組成的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM