2014-03-25 33 views
0

我有几个(简单)模型,如语言,部门等,它们只包含名称和id属性(列)。我想制作一个控制器和视图,它控制着CRUD功能。我应该如何处理这个问题,让几个模型有一个控制器?ember.js一个控制器/查看更多模型

是否可以从路由变量加载模型?

伪代码

somecontroller/MODELNAME

App.IndexRoute = Ember.Route.extend({ 
    model: function(modelname) { 
     return this.get('store').find(modelname); 
    } 
}); 

回答

2

可以从模型钩加载多个模型,并将它们分配到控制器的性能。例如

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将返回上传递的对象的所有属性的承诺值等待一个承诺,然后将用相同的属性名和还愿结果值的对象履行。

通过覆盖setupController,您可以确定在控制器上设置了哪些属性以及哪些值。

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。希望它有帮助:

http://emberjs.jsbin.com/basoneno/1/edit

相关问题