我有一種情況,當用戶按下刷新按鈕時,我想要reload模型。我之前使用Ember-Model實現了此功能,但是,我們最近將其移至Ember-Data,並且在試圖從模型類運行任何method時收到錯誤消息。任何幫助,將不勝感激。Ember.js在運行類方法時拋出「沒有方法」錯誤
單擊按鈕時錯誤:
Uncaught TypeError: Object [object Object] has no method 'reload'
應用程序的結構:
App.ApplicationAdapter = DS.DjangoRESTAdapter.extend({
namespace: 'api/1'
});
App.SomeRoute = Ember.Route.extend({
model: function() {
return this.store.find('publishable');
},
});
App.SomeModel = DS.Model.extend({
title: attr(),
description: attr(),
authors: hasMany('author', { async: true }),
category: belongsTo('page', { async: true }),
published: attr(),
publish_from: attr(),
slug: attr(),
contentType: attr(),
});
App.SomeController = Ember.ArrayController.extend({
actions : {
reload: function(model) {
model.reload();
}
}
});
<div>
<span {{action reload model}} class="btn"></span>
</div>
當我控制器上的動作內登錄this.get('model')
。我收到以下內容:
Class {type: function, content: (...), store: Class, isLoaded: true, isUpdating: false…}
__ember1390344611587: "ember592"
__ember1390344611587_meta: Object
_super: undefined
arrangedContent: (...)
content: (...)
get content: function() {
set content: function (value) {
isLoaded: true
isUpdating: false
store: Class
toString: function() { return ret; }
type: App.Publishable
__proto__: Object
很可能您所獲得的對象不是DS.Model的一個實例。你應該調試你的代碼來找出它的真實性。作爲一個側面說明,你的關係是異步的,所以試圖「獲取」它們會返回一個承諾,而不是一個模型。這可能是你的問題。 – GJK
它也可以幫助你使用'Ember.inspect(模型)'來查看你正在處理的對象。 –