我有几个(简单)模型,如语言,部门等。它们只包含name和id属性(列)。我想制作一个控制器和视图,它控制CRUD功能。我应该如何解决这个问题,为多个模型配备一个控制器?
是否可以从路由变量加载模型?
伪代码
somecontroller / MODELNAME
App.IndexRoute = Ember.Route.extend({
model: function(modelname) {
return this.get('store').find(modelname);
}
});
答案 0 :(得分:2)
您可以从模型挂钩加载多个模型,并将它们分配给控制器属性。 e.g。
App.IndexRoute = Ember.Route.extend({
model: function(modelname) {
var store = this.get('store');
return Ember.RSVP.hash({
foos: store.find('foos'),
bars: store.find('bars')
});
},
setupController: function(controller, model) {
controller.set('foos', model.foos);
controller.set('bars', model.bars);
}
});
Ember.RSVP.hash
将返回一个承诺,该承诺等待传递对象的所有属性的promise值,然后将使用具有相同属性名称和promise履行结果的对象作为值来实现。
通过覆盖setupController
,您可以确定控制器上设置的属性以及值。
答案 1 :(得分:0)
您可以通过两种方式在路线上获得两个模型
/*
* Use the model hook to return model, then
* setController to set another model
*/
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.findAll('languages');
},
setupController: function(controller, model) {
this._super(controller, model);
controller.set('department', this.store.findAll('department'));
}
});
/*
* Can return a Hash of promises from the model hook
* and then use those as your models
*/
App.RsvphashRoute = Ember.Route.extend({
model: function() {
return Ember.RSVP.hash({
langs: this.store.find('languages1'),
dept: this.store.find('department1')
});
}
});
这里有 jsbin 。希望它有所帮助: