如何在不触发观察者的情况下设置控制器的模型?

Mic*_*ton 3 ember.js

鉴于我有这个:

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

如何在没有触发自动保存的路径中设置SomeController的模型?

Mar*_*ior 6

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')
});
Run Code Online (Sandbox Code Playgroud)

在某些地方:

controller.suspendAutosave(function() {
  controller.set('content.text', 'foo');
});
Run Code Online (Sandbox Code Playgroud)

这不酷,但这是我所知道的唯一方式.我希望它有所帮助.