2014-03-19 61 views
0

我想擴展一個模型,但我無法弄清楚如何做到這一點。燼js如何擴展模型

讓的說,我想2種不同待辦事項的在我的TodoMVC
首先會添加一個網址,第二個會添加一個段落(例如)

這是我腦子裏想的:

Todos.Todo = DS.Model.extend({ 
    title: DS.attr('string'), 
    isCompleted: DS.attr('boolean') 
}); 

Todos.Todo.FIXTURES = [ 
    { 
    id: 1, 
    title: 'Learn Ember.js', 
    isCompleted: true, 
    }, 
    { 
    id: 2, 
    title: '...', 
    isCompleted: false, 
    }, 
    { 
    id: 3, 
    title: 'Profit!', 
    isCompleted: false, 
    } 
]; 

Todos.TodoURL = Todos.Todo.extend({ 
    url: 'google.com', 
}); 

Todos.TodoParagraph = Todos.Todo.extend({ 
    paragraph: 'Lorum...', 
}); 

但是這給了我Assertion failed: Unable to find fixtures for model type Todos.TodoURL

我已經找到了reopen功能,但是,這並不爲我的模型get和set功能。

回答

0

你必須修改你的燈具或REST-適配器Todos.TodoURL和TodoParagraph。這將工作。 Ember Data從類的名稱中獲取URL,因此當您檢索TodoURL時,它會調用/ todoUrl /。

2

發生這種情況是因爲ember-data正試圖使用​​Todos.TodoURL.FIXTURES和來檢索您的燈具。但是當你擴展這個類時,這些屬性不會被繼承。爲了使靜態方法和屬性得到繼承,你應該使用reopenClass

Todos.Todo.reopenClass({ 
    FIXTURES: [ 
    { 
     id: 1, 
     title: 'Learn Ember.js', 
     isCompleted: true, 
    }, 
    { 
     id: 2, 
     title: '...', 
     isCompleted: false, 
    }, 
    { 
     id: 3, 
     title: 'Profit!', 
     isCompleted: false, 
    } 
    ] 
}); 

我希望它能幫助

+0

它的工作原理,但它不是我一直在說的,我決定在我的數據庫中做這一步,我會通過休息來使用它們。 thx雖然是一個很好的答案 –