鉴于我有这个:
App.SomeController = Ember.ObjectController.extend({
autosave: function(){
//stuff
}.observes('content.text', 'content.colour', 'content.webfont')
});
如何在不触发自动保存的情况下在路由中设置 SomeController 的模型?
鉴于我有这个:
App.SomeController = Ember.ObjectController.extend({
autosave: function(){
//stuff
}.observes('content.text', 'content.colour', 'content.webfont')
});
如何在不触发自动保存的情况下在路由中设置 SomeController 的模型?
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');
});
这并不酷,但这是我知道的唯一方法。我希望它有所帮助。
或者,您可以使用: Ember.removeObserver() 和 Ember.addObserver() 方法。