Ember.js RC1 - 控制器'需要'另一个尚不存在的

时间:2013-03-20 04:58:49

标签: ember.js

我的路由结构:

App.ready = function() {
    App.Router.map(function() {
        this.resource('contacts', function() {
            this.resource('contact', function() {
            });
        });
    });
}

现在,在contactsController我的回复和add操作过渡到联系路线。我想在add上调用contactController方法。

我已将needs: ['contact']放在我的ContactController上,但后来收到此消息:

<App.ContactsController:ember197> needs controller:contact but it does not exist

当我使用controllerFor 已弃用)时,我也会收到错误:

this.controllerFor('contact').add();

因此,一旦实际转换到适当的路线,Ember.js RC1似乎只会创建控制器(和其他相关实例)。

有没有办法解决这个问题。

1 个答案:

答案 0 :(得分:2)

  

因此,一旦实际转换到适当的路线,Ember.js RC1似乎只会创建控制器(和其他相关实例)。

有趣 - 我之前曾想过ember生成的控制器,但不会猜测。

  

有解决方法吗?

解决方法是手动定义App.ContactController。这样的事情会起作用:

App = Ember.Application.create({});

App.Router.map(function() {
    this.resource('contacts', function() {
        this.resource('contact', function() {
        });
    });
});

App.ContactController = Ember.Controller.extend({
  add: function() {
    alert('App.ContactController.add() was called!');
  }
});

App.ContactsController = Ember.Controller.extend({
  needs: ['contact'],
  add: function() {
    this.get('controllers.contact').add();
  }
});

http://jsbin.com/osapal/1/edit