2013-09-23 21 views
5

Próbuję użyć prettyprint z niektórymi danymi ajax. Problem polega na tym, że kiedy przywoływana jest dyrektywa, dane nie są gotowe, więc otrzymuję niezdefiniowaną wartość zmiennej.Dyrektywa AngularJs oglądająca dane asynchroniczne

Plunkr: http://plnkr.co/edit/fdRi2nIvVzT3Rcy2YIlK?p=preview

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope,$http) { 


$scope.result = $http.get('data.json').success(function(result){ 
    return result.data.dom 
}) 

}); 


app.directive('prettyprint', function() { 
return { 
    restrict: 'C', 
    link: function postLink(scope, element, attrs) { 
      element.html(prettyPrintOne(scope.result)) 
    } 
}; 
}); 

Odpowiedz

5

Zastosowanie scope „s $watch metoda:

scope.$watch("result" , function(n,o){ 
     element.html(prettyPrintOne(scope.result)); 
}) 

I zamiast tego:

$scope.result = $http.get('data.json').success(function(result){ 
     return result.data.dom 
}) 

Użyj tego:

$http.get('data.json').success(function(result){ 
     $scope.result = result.dom; 
}) 

upadać: http://plnkr.co/edit/Autg0V

+0

I został uaktualniony plunkr, ale to nie wydaje się działać ... – Tropicalista

+0

@Tropicalista widzę. zaktualizowałem swoją odpowiedź, spójrz – Cherniv

Powiązane problemy