2013-03-28 18 views
6

Todo MVC App for Ember üzerinde çalışıyorum. https://github.com/addyosmani/todomvc/blob/gh-pages/architecture-examples/emberjs/js/models/todo.js#L9TodoMVC - Ember.run.once

todoDidChange: function() { 
    Ember.run.once(this, function() { 
     this.get('store').commit(); 
    }); 
}.observes('isCompleted', 'title'); 

Nasıl Ember.run.once yardım this.get('store').commit() sarma vermez: modelde, ben Bkz Ember.run.once sarılmış bir taahhüt() yöntemine yapılan bir çağrı fark? Yöntemi, sadece görünür yapmak için değiştirdim: Görünür bir fark görmüyorum. the documentation okudum ve previos SO discussion bunu çözemedi.

Bu, küçük bir uygulama olduğu için farkın gösterilmediği bir durum mu?

cevap

5

Yanıtı response to another question olarak buldum.

böyle bir dizinin her öğe üzerinde bir dinleyici varsa:

App.IssuesController = Ember.ArrayController.extend({ 
    issue_list: ['a','b','c'], 
    issueListObserver : function(){ 
     Ember.run.once(this, this.categorize); 
    }.observes('[email protected]"), 

    this.categorize: function() { 
     console.log('foo'); 
    } 
}); 

Ember.run.once olmadan, this.categorize() listede manipüle her öğe için çağrılır. Üç öğe değiştirilirse, üç çağrı olacaktır. Ember.run.once ile kategorize edilen kategorilere ayırma, sadece zincirin sonunda bir kez çağrılacaktır.