【问题标题】:ember.js one controller/view for more modelsember.js 一个控制器/视图,用于更多模型
【发布时间】:2014-03-25 00:10:43
【问题描述】:

我有几个(简单)模型,如语言、部门等。它们只包含名称和 ID 属性(列)。我想做一个控制器和视图,它控制 CRUD 功能。我应该如何解决这个问题,让一个控制器适用于多个模型?

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

伪代码

一些控制器/型号名称

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

【问题讨论】:

    标签: ember.js routing


    【解决方案1】:

    您可以从模型挂钩加载多个模型并将它们分配给控制器属性。例如

    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 等待传递对象的所有属性的 Promise 值,然后将使用具有相同属性名称的对象和 Promise 实现结果作为值来实现。

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

    【讨论】:

      【解决方案2】:

      您可以通过以下两种方式在一条路线上获取两个模型

       /*
        * 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

      【讨论】:

        猜你喜欢
        • 2013-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        相关资源
        最近更新 更多