3

鉴于我有这个:

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

如何在不触发自动保存的情况下在路由中设置 SomeController 的模型?

4

2 回答 2

6

Emberjs 不支持至少在 public api中暂停观察者。

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

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

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

于 2013-08-12T17:25:28.673 回答
1

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

于 2013-12-06T11:46:58.463 回答