我注意到如果我为不同的路由使用相同的控制器,它不会被重置,所以我可以保持路由之间的数据共享,这对我真的很有帮助.
但我想知道......控制器什么时候重装?(运行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'});
  }
});
或者你可以在控制器上定义一些重置它的方法,并在调用期间调用它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
});
App.FooController = Ember.ObjectController.extend({
  foo: 'asdf',
  bar: 'wert',
  reset: function(){
    this.setProperties({foo:'asdf', bar: 'ewaf'});
  }.on('init') 
});
| 归档时间: | 
 | 
| 查看次数: | 1116 次 | 
| 最近记录: |