2013-04-09 15 views
6

Javascript'in nasıl hata ayıklanacağını arıyorum. Firefox'un yeni hata ayıklayıcılığını bilmediği halde, elindeki aletlere, kendi "ateşböceği" ni kurdukları için oldukça tanıdık geliyor.Ember/ember veri nesnelerinin yaşam döngüsünden nasıl geçilir. Veya Ember.js ve Ember-Data hata ayıklama ipuçları/ipuçları?

Ember'in kendi çağrı mekanizmaları ile çalıştırılmak üzere nesneler/işlevler oldukça kolayca geçtiğinden yığın izlemeyi okumak için kolay bir yol arıyorum. Hangi işlevin çağrıldığını ve bağlandığı şeyin bağlandığının izini kaybetmek kolaydır. Ember'in yığınının hatalarını ayıklarken aklına gelen herhangi bir püf noktası var mı?

Güncelleme: bu http://www.html5rocks.com/en/tutorials/developertools/async-call-stack/

+0

kimse ne olur ve bir Kor görünümü oluşturulmakta olan zaman olur hangi sırayla bir diyagram çekti gibi görünüyor. –

cevap

6

İlk zaman uyumsuz ayıklamaya daha az sorun, sen kor hata ayıklama sürümünü değil, küçültülmüş üretim versiyonunu kullanmak istediğiniz olacaktır. Bu size konsolda daha iyi bir bilgi verir.

İkincisi, benim için büyük ölçüde yardımcı olmuştur şey, benim rotalar, görünümler ve kontrolörler tüm etkinliklerim içinde ayıklama içinde eklemektir.

Ana Uygulama sınıfında debugMode adlı bir özelliğim var ve bir günlük işlevi var.

window.App = Ember.Application.create({ 

    debugMode: false, 

    log: function(message, location, data) { 
     if (this.debugMode) { 
     if (data != null) { 
      if (typeof data === 'object') { 
      data = Ember.inspect(data); 
      } 
      console.log('DEBUG: ' + this.appName + ' : ' + location + ' : ' + message); 
      return console.log('DEBUG: ' + this.appName + ' : (continued) data: ' + data); 
     } else { 
      return console.log('DEBUG: ' + this.appName + ' : ' + location + ' : ' + message); 
     } 
    } 
} 

Günlük işlevi iletiyi, konumu ve ardından isteğe bağlı olarak verileri alır.

Böylece, günlük iki örnek aşağıdaki gibidir:

  1. günlük bir işlev ve

    App.ProfileController = Ember.ObjectController.extend({ 
    
        setProfile: function() { 
        App.log("setting current user's profile", 'App.ProfileController.setProfile', App.currentUser); 
        //do other stuff with the profile 
        } 
    }) 
    
  2. günlük verileri bir kontrol/görünüm/rota başlatma geçmesi

    App.EventController = Ember.ObjectController.extend({ 
        init: function() { 
        this._super(); 
        App.log('initializing event controller', 'App.EventController.init'); 
        return this.set('isLoading', false); 
        } 
    }) 
    

Sonra konu bu şekilde olduğu yerde teşhis etmek için denemek için harika konsol bilgilerle bırakılmalıdır:

DEBUG: My App Name : App.ApplicationController : application controller initializing 
DEBUG: My App Name : App.ApplicationRoute.setupController : setupController called 
DEBUG: My App Name : (continued) data: {target: <App.Router:ember249>, namespace: App, container: [object Object], _debugContainerKey: 
DEBUG: My App Name : App.accountController.setCurrentUser : setting applications currentUser object 
DEBUG: My App Name : (continued) data: {"id":3,"username":"bob","firstName":"Bob","lastName":"W","updatedAt":"2013-04-16T06:29:39.731Z"} 
DEBUG: My App Name : App.EventController.init : initializing event controller 
DEBUG: My App Name : App.EventRoute.setupController : setupController called 
DEBUG: My App Name : (continued) data: {target: <App.Router:ember249>, namespace: App, container: [object Object], _debugContainerKey: controller:event, _childContainers: [object Object], isLoading: false} 

Son olarak,

debugger; 
görüntüleme/yönlendirme/denetleyicilerin iç

ile kullanım ayıklama şablonlarınızın

{{debugger}} 

ve konsol veya satır içi kullanım

Ember.inspect(YOUR_OBJECT); 

denkor bilgilerini görüntülemek için. Hala yaşam döngüsü açıklama için arıyorum

+0

Teşekkürler. Bunu gönderdiğimde, dokümanlar ve src dokümantasyonu gerçekten 1.0 gün içinde gerçekten yoktu.Şimdi bu daha az sorun gibi görünüyor. –

İlgili konular