Ember.js 如何设置控制器';不触发观察者的s模型?

Ember.js 如何设置控制器';不触发观察者的s模型?,ember.js,Ember.js,鉴于此: App.SomeController = Ember.ObjectController.extend({ autosave: function(){ //stuff }.observes('content.text', 'content.colour', 'content.webfont') }); 如何在不触发autosave的情况下在路由中设置某个控制器的模型?Emberjs至少不支持挂起观察者 我解决这些问题的方法是创建一个标志: App.SomeControl

鉴于此:

App.SomeController = Ember.ObjectController.extend({
  autosave: function(){
    //stuff
  }.observes('content.text', 'content.colour', 'content.webfont')
});

如何在不触发autosave的情况下在路由中设置某个控制器的模型?

Emberjs至少不支持挂起观察者

我解决这些问题的方法是创建一个标志:

App.SomeController = Ember.ObjectController.extend({
  _suspendAutosave: false,
  suspendAutosave: function(fn) {
    this.set('_suspendAutosave', true);
    fn();
    this.set('_suspendAutosave', false);
  },
  autosave: function(){
    if (this.get('_suspendAutosave')) { return; }  
    // some code ...
  }.observes('content.text', 'content.colour', 'content.webfont')
});
在某个地方:

controller.suspendAutosave(function() {
  controller.set('content.text', 'foo');
});

这并不酷,但这是我知道的唯一方法。我希望它能有所帮助。

或者您可以使用:Ember.removeObserver()和Ember.addObserver()方法。

Hi@Michael。我已经回答了你的问题。我只是想知道,为什么要这样做?我使用的是epf,而observer实现了autosave。然而,由于epf中的一个开放问题,我最终不得不在观测者中重置模型,这将导致无限循环中的无限循环。