2015-04-29 31 views
6

Angular için ui yönlendiriciyi kullanıyorum ve geçerli durumun adını almaya çalışıyorum.

Üzerinde 3 gün çalıştıktan sonra, templateUrl kullandığımda boş olduğunu öğrendim. Şablona dönüştürüldükten sonra: 'test', durum adı sihirli olarak görünür ...

Çalışması mümkün mü? Here is the demo

Code on above link 
+0

Maalesef "Burada kodunu girin" Onu missclicked ve şimdi benim yazı düzenleyemezsiniz. – Arth

+0

Plunker'da önizlemeyi ayrı bir pencerede başlatır ve bir çekicilik gibi çalışır. :) –

+0

@Arth sorun nedir, konsolda '$ state.current.name' görüyor musunuz? –

cevap

9

A $ izle hepsi asenkron çünkü biz zamanlama güvenemez, burada ihtiyaç duyulan: bu nesne bir başvuru kullandığı için

myApp.controller('navCtrl', ['$state', '$scope','$timeout', function($state, $scope, $timeout){ 
    $scope.currState = $state; 
    console.log("This one have some objects: "); 
    console.log('by reference:', $scope.currState); 
    console.log('by value:', JSON.parse(JSON.stringify($scope.currState))); 

    // console.log("But when I want to access name its empty: "); 
    // $timeout(function() { 
    // console.log($state.current.name); 
    // }); 

    // use this instead: 
    $scope.$watch('currState.current.name', function(newValue, oldValue) { 
     console.log(newValue); 
    }); 
}]); 

console.log('by reference:', $scope.currState); çalışır. Konsolda gördüğümüz zaman, nesne zaten değişti.

Çıktısını çalışma noktasında donatan, yukarıdaki console.log('by value:', JSON.parse(JSON.stringify($scope.currState))); çıkışıyla karşılaştırın. Boş bir $state.current.name bulacaksınız.

Ayrıca bakınız: How can I change the default behavior of console.log? (*Error console in safari, no add-on*) bu konuda

+0

Şimdi çalışıyor, yardım için teşekkürler! – Arth

+0

Bu harika çalışıyor! Mevcut duruma göre vücut stilini değiştirmek için kullanılır. – Vida

İlgili konular