Javascript 余烬数据属于并加载另一个控制器模型记录
我正在尝试使用ember数据制作一个ember.js应用程序,其中基本上有两个表来自使用Laravel4 restfully的mysql数据库。这里,第一个表的一列是另一个表条目的外键。我在浏览教程时,在ember data中偶然发现了这个函数 贝隆斯托酒店 我把它用作:Javascript 余烬数据属于并加载另一个控制器模型记录,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我正在尝试使用ember数据制作一个ember.js应用程序,其中基本上有两个表来自使用Laravel4 restfully的mysql数据库。这里,第一个表的一列是另一个表条目的外键。我在浏览教程时,在ember data中偶然发现了这个函数 贝隆斯托酒店 我把它用作: App.Leader = DS.Model.extend({ name_en: DS.attr('string'), name_ne: DS.attr('string'), photo: DS.attr('stri
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')
});
在领导者模型中,party列只包含party模型的id号,所以我想要实现的是以某种方式将这两个模型关联起来,这样我就可以使用领导者模型中提供的id或整数从party模型中获取特定记录
我的路线代码如下所示:
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对应于政党模型下的特定记录
当用户浏览某个特定的领导者记录时,还应该使用领导者模型中party列中提供的id从party模型中获取party名称
这些是我当前的控制器:
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模板内的party model中获取记录?我认为在获取特定Leader时,您可以点击以下按钮,如(未测试): 要在leader创建模板中显示所有参与方的列表,我认为您可以在LeaderController中将属性设置为所有参与方,如下所示(未测试): 然后,您可以创建一个视图并将其内容绑定到上下文控制器的
parties
属性,并将其值设置为selectedParty
computed属性
另外,不确定是否最好将您的nprogress呼叫放在路线的激活
和停用
挂钩中
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 value.get('party');
});
return data;
}
});
App.LeaderController = Ember.ObjectController.extend({
isEditing: false,
selectedParty: function() {
return this.model.get('party');
}.property('model'),
parties: function() { return this.store.find('party') },
actions: {
edit: function(){
this.set('isEditing', true);
},
doneEditing: function(params){
this.set('isEditing', false);
},
delete: function(params){
//delete code
}
}
});