2012-08-03 106 views
13

比方说,我的轨道模型是这样的:如何继承或使用烬数据继承其他模型的模型

class SalesRelationship < ActiveRecord 

end 

这是由crossSell继承这样的:

class crossSell < SalesRelationship 

end 

如何在余烬数据中显示这种继承关系。什么是我们的最佳做法:

App.salesRelationship = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

我可以创建一个名为 'crossSell' 子类,像这样

crossSell = App.salesRelationship({ 
    productName: DS.attr('string') 
}); 

或类似这样的

App.salesRelationship.crossSell = DS.Model.extend({ 
    productName: DS.attr('string') 
    }); 

回答

13

八九不离十,你只能扩展SalesRelationship。

App.CrossSell = App.SalesRelationship.extend({ 
    productName: DS.attr('string') 
}) 
6

在Ember 2.7中可以这样做。假设你有一个Person类,并希望从它继承作出了状态字段的Employee(如雇用,退休,射击,离开等)

应用程序/模型/ person.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr(), 
    fullName: Ember.computed('firstName', 'lastName', function() { 
    return `${this.get('lastName')}, ${this.get('firstName')}`; 
}); 

app/models/employee.js

import DS from 'ember-data'; 

import Person from './person'; 

export default Person.extend({ 
    status: DS.attr(), 
    statusCode: DS.attr(), 
}); 
+1

如何从'./person'导入Person?'而不是看到两个模型都在同一个文件夹中。 – Caltor 2017-01-17 15:02:42

+1

@Caltor谢谢,我更新了代码:)好赶上! – rmcsharry 2017-01-17 15:55:13

+0

完美,非常感谢! – 2017-07-12 08:03:02