![](/img/trans.png)
[英]Ember multiple Json request Error while loading route Object has no method 'addArrayObserver'
[英]Ember #<Object> has no method 'set'
我在路線中提取JSON數據,如下所示:
App.CollectionRoute = Ember.Route.extend({
setupController: function(controller, model){
$.getJSON('../returnitems.json', function(data){
controller.set('returnItems', data);
})
}
});
這給了我一個我可以在模板中迭代的對象:
{{#each destination in controller.returnItems}}
現在,我想通過控制器使用以下代碼刪除某些內容:
this.get('controllers.collection').get('returnItems')[returnIndex].set('hasItems', false);
出現以下錯誤:
Uncaught TypeError: Object #<Object> has no method 'set'
但是當我使用時:this.get('controllers.collection')。get('returnItems')[returnIndex] .hasItems = false
它告訴我使用get和set ?!
您不應該在setupController
掛鈎中進行AJAX調用。 您應該使用model
和afterModel
掛鈎,以便Ember在完全過渡到路由之前一直等到afterModel
成功。
現在,您無法調用set
方法,因為$.getJSON
返回一個普通的舊Javascript對象數組,而不是您期望的Ember.Object
數組。
相反,您將執行以下操作:
App.CollectionRoute = Ember.Route.extend({
afterModel: function(controller, model) {
var self = this;
return $.getJSON('../returnitems.json', function(data_items){
var items = [];
for (var i = 0; i < data_items.length; i++) {
items.push(Ember.Object.create(data_items[i]));
}
self.set('returnItems', items);
});
},
setupController: function (controller, model) {
controller.set('returnItems', this.get('returnItems'));
}
});
然后,您將能夠:
this.get('controllers.collection').get('returnItems').objectAt(returnIndex).set('hasItems', false);
我希望這可以幫助你!
嘗試使用
this.get('controllers.collection').get('returnItems').objectAt(returnIndex).set('hasItems', false);
請參閱: http : //emberjs.com/api/classes/Ember.Array.html#method_objectAt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.