1

我的路由结构:

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 似乎只在一个实际转换到适当的路由时才创建控制器(和其他相关实例)。

有没有解决的办法。

4

1 回答 1

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

于 2013-03-20T07:14:43.570 回答