2

我有一個文件夾models模型文件。每個文件都包含一個模型。模型之間有很多關係(hasMany,belongsTo)。如果我想設置的hasMany關係,那麼我就需要有已定義的子模型,否則我得到一個錯誤:如何設置模型的加載順序以避免關係錯誤?

Error: assertion failed: The first argument DS.belongsTo must be a model type or string, like DS.belongsTo(App.Person) 

由於模型(App.Person在上面的示例的情況下)尚未確定。

這裏是關聯定義的一個:

App.Seat = DS.Model.extend(
    number: DS.attr('number') 
    tour: DS.belongsTo(App.Tour) 
) 

包括像這樣的模型文件夾:

//= require_tree ./models 

我知道解決的辦法來定義所有的模型(或至少其有關係彼此)在一個文件中。

問題:是否有任何其他解決方案允許將所有模型保存在單獨的文件中?

回答

1

我發現了一個很簡單的解決方案:定義所有關係不是作爲對象(例如App.Tour):

App.Seat = DS.Model.extend(
    number: DS.attr('number') 
    tour: DS.belongsTo(App.Tour) # <<<<<<<<<<<============ ***here*** 
) 

但作爲一個字符串(如"App.Tour"。)所以只是把它放在引號

App.Seat = DS.Model.extend(
     number: DS.attr('number') 
     tour: DS.belongsTo("App.Tour") # <<<<<<<<<<<============ ***here*** 
    ) 

我認爲這個「解決方法」是因爲JavaScript限制。

修訂:使用字符串是由優選ember.js

+1

燁,這是優選* *由於被定義爲字符串[第5版](https://github.com/emberjs/data/ blob/master/BREAKING_CHANGES.md) – MilkyWayJoe 2013-02-15 18:49:54

+0

我在[tests](https://github.com/emberjs/data/blob/master/packages/ember-data/tests/integration/embedded/embedded_without_ids_test.js# L9)並且沒有使用字符串。 – freemanoid 2013-02-15 19:27:23

相關問題