Javascript 余烬数据属于并加载另一个控制器模型记录

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

我正在尝试使用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('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   
        }
    }
    });