我注意到如果我为不同的路由使用相同的控制器,它不会被重置,所以我可以保持路由之间的数据共享,这对我真的很有帮助.
但我想知道......控制器什么时候重装?(运行init并清理他的所有属性)?
我可以手动告诉控制器重新加载吗?
谢谢你的帮助:)
控制器通常是单例实例(不包括itemController实例),它们处于页面的生命周期.
如果您需要重置某些属性,您可以setupController在需要的路线期间执行此操作.
App.FooRoute = Ember.Route.extend({
model: function(){
//return something...
},
setupController: function(controller, model){
this._super(controller, model);
controller.setProperties({foo:'asdf', bar: 'ewaf'});
}
});
Run Code Online (Sandbox Code Playgroud)
或者你可以在控制器上定义一些重置它的方法,并在调用期间调用它setupController.当换出控制器后面的模型时,计算属性都被标记为脏并自动重新计算.
App.FooRoute = Ember.Route.extend({
model: function(){
//return something...
},
setupController: function(controller, model){
this._super(controller, model);
controller.reset();
}
});
App.FooController = Ember.ObjectController.extend({
foo: 'asdf',
bar: 'wert',
reset: function(){
this.setProperties({foo:'asdf', bar: 'ewaf'});
}// if you want it to happen on init tack on .on('init') right here
});
Run Code Online (Sandbox Code Playgroud)
App.FooController = Ember.ObjectController.extend({
foo: 'asdf',
bar: 'wert',
reset: function(){
this.setProperties({foo:'asdf', bar: 'ewaf'});
}.on('init')
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |