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();
}
});