2013-08-12 1 views
3

Étant donné que j'ai ceci:Comment puis-je définir le modèle d'un contrôleur sans déclencher un observateur?

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

Comment puis-je définir le modèle de SomeController dans une voie sans déclencher l'enregistrement automatique?

+0

Bonjour @Michael. J'ai répondu à votre question. Juste pour savoir, pourquoi voulez-vous faire cela? –

+0

J'utilise epf, et l'observateur implémente l'autosave. Cependant, en raison d'un problème ouvert dans epf, je finis par devoir réinitialiser le modèle dans l'observateur, ce qui conduit à une boucle infinie de boucles infinies. –

Répondre

6

Emberjs n'a pas de suport pour suspendre les observateurs au moins in public api.

Mon approche que les problèmes est de créer un drapeau:

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

à un endroit:

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

Ce n'est pas cool, mais est la seule façon que je connaisse. J'espère que ça aide.

1

Vous pouvez également utiliser les méthodes suivantes: Ember.removeObserver() et Ember.addObserver().

Questions connexes