ember关注实施

时间:2013-11-06 13:47:42

标签: ember.js cross-cutting-concerns

你如何在ember中实现关注。例如,发送邀请功能:

  • 用户有5个邀请(从提取数据涉及商店)
  • 邀请来自任何申请状态
  • 它出现在modal
  • 它可能不止一个 - 因此{{outlet modal}}也不起作用
  • 用户可以输入电子邮件并发送邀请(可用邀请号减少)

当前模态实现 - 因此无法将控制器分配给视图...

openModal: function(modal) {
  var modalView = this.container.lookup(modal);
  modalView.appendTo(MS.rootElement);
}

组件方法对我来说不起作用:内容(模型)应该通过路由来设置,我不知道组件中可能对数据提取有用的事件。

嵌套路线也不起作用 - 要改变很多。

我找不到任何有效的方法,请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将控制器分配给视图。这是一个简单的例子,我可以从页面的任何位置注入一个视图,为它分配一个控制器,当我重新获取视图时,它具有相同的控制器(如果这是预期的结果)。如果这不能让你朝着正确的方向前进,请告诉我。

您可以使用冒泡来允许从应用中的任何位置调用它。

http://emberjs.jsbin.com/uhoFiQO/4/edit

App.InviteView = Ember.View.extend({
  templateName: 'invite'

});

App.InviteController = Ember.Controller.extend({
  actions: {
    pretendToSend: function(){
     var invites =  this.get('invites'); 
      this.set('invites', invites-1);
    }
  }
});

App.ApplicationRoute = Ember.Route.extend({
  setupController: function(controller, model){
    var inviteController = this.controllerFor('invite');
    inviteController.set('invites', 5);
  },
  actions:{
    popInvite: function(){
      var inviteController = this.controllerFor('invite');
      // create/insert my view
      var iv = App.InviteView.create({controller: inviteController});
      iv.appendTo('body');
    }
  }
});