我正在尝试使用 ember-data 制作一个 ember.js 应用程序,其中基本上有两个表来自使用 laravel 4 的 mysql 数据库。这里第一个表的一列是另一个表条目的外键。我正在浏览教程,我在 ember 数据中偶然发现了这个函数。
DS.belongsTo
我用这个作为:
App.Leader = DS.Model.extend({
name_en: DS.attr('string'),
name_ne: DS.attr('string'),
photo: DS.attr('string'),
education: DS.attr('string'),
contact: DS.attr('string'),
address: DS.attr('string'),
age: DS.attr('string'),
party: DS.belongsTo('party'),
history: DS.attr('string')
});
App.Party = DS.Model.extend({
name: DS.attr('string'),
logo: DS.attr('string'),
headquarter: DS.attr('string'),
president: DS.attr('string'),
established: DS.attr('string'),
philosophy: DS.attr('string')
});
在 Leader 模型中,party 列只包含 Party Model 的 id 号,所以我想要实现的是以某种方式关联这两个模型,所以我可以使用 Leader 的 party 下提供的 id 或整数从派对模型中获取特定记录模型。
我的路线代码是这样的:
App.LeadersRoute = Ember.Route.extend({
model: function(){
NProgress.start();
var data = this.store.find('leader');
data.then(function(value){
NProgress.done();
});
return data;
}
});
App.LeaderRoute = Ember.Route.extend({
model: function(params){
NProgress.start();
var data = this.store.find('leader', params.leaders_id);
data.then(function(value){
NProgress.done();
});
return data;
}
});
App.PartiesRoute = Ember.Route.extend({
model: function(){
NProgress.start();
var data = this.store.find('party');
data.then(function(value){
NProgress.done();
});
return data;
}
});
App.PartyRoute = Ember.Route.extend({
model: function(params){
NProgress.start();
var data = this.store.find('party', params.parties_id);
data.then(function(value){
NProgress.done();
});
return data;
}
});
我想要实现的是,当我创建一个新的领导者记录时,我需要一个选择输入,它显示所有当前派对记录的列表并选择其中一个,当用户创建领导者然后在派对列下它应该放置一个对应于党模式下的特定记录。
并且当用户浏览某些特定的领导者记录时,它还应该使用领导者模型中派对列中提供的 id 从派对模型中获取派对名称。
这些是我当前的控制器:
App.LeadersController = Ember.ArrayController.extend({
isNew: false,
actions: {
newRecord: function(){
this.set('isNew', true);
},
create: function(){
//create code
},
cancel: function(){
this.set('isNew', false);
}
},
});
App.LeaderController = Ember.ObjectController.extend({
isEditing: false,
actions: {
edit: function(){
this.set('isEditing', true);
},
doneEditing: function(params){
this.set('isEditing', false);
},
delete: function(params){
//delete code
}
}
});
App.PartiesController = Ember.ArrayController.extend({
file_name: null,
isNew: false,
actions: {
newRecord: function(){
this.set('isNew', true);
},
create: function(){
//create code
},
cancel: function(){
this.set('isNew', false);
}
},
});
App.PartyController = Ember.ObjectController.extend({
isEditing: false,
actions: {
edit: function(){
this.set('isEditing', true);
},
doneEditing: function(params){
this.set('isEditing', false);
},
delete: function(params){
//delete code
}
}
});
如何从 Leader 模板中的派对模型中获取记录?