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

Ember.js RC1-控制器';需要';另一个还不存在的,ember.js,Ember.js,我的路由结构: App.ready = function() { App.Router.map(function() { this.resource('contacts', function() { this.resource('contact', function() { }); }); }); } 现在在我的联系人控制器中我响应并添加转换到联系人路径的操作。然后,我想调用我的contactCon

我的路由结构:

App.ready = function() {
    App.Router.map(function() {
        this.resource('contacts', function() {
            this.resource('contact', function() {
            });
        });
    });
}
现在在我的
联系人控制器中
我响应并添加转换到联系人路径的
操作。然后,我想调用我的
contactController
上的
add
方法

我已将
需求:['contact']
放置在我的
ContactController
上,但随后我收到以下消息:

<App.ContactsController:ember197> needs controller:contact but it does not exist
因此,Ember.js RC1似乎只在实际转换到适当的路由时创建控制器(和其他相关实例)

有办法解决这个问题吗

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

有趣的是,我以前以为余烬生成了控制器,但我猜不是

有办法解决这个问题吗

解决方法是手动定义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();
  }
});

好的,我知道我做错了什么。对于联系人,我有一个
ContactIndexController
,因为我也在使用嵌套在联系人下的资源。在这种情况下,我需要
需要:['contactIndex']
。我在
ContactController
中还有一个
needs:['contacts']
,因此在处理
needs
时,控制器似乎不必实例化。命名约定与
索引
后缀有点混淆,但不是火车撞车。一旦我对余烬有了更好的理解,它可能会有意义。
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();
  }
});