2013-09-23 65 views
5

我想用一些ajax數據使用prettyprint。問題是當指令被調用時,數據沒有準備好,所以我得到未定義的變量輸出。AngularJs指令看異步數據

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

回答

5

使用scope$watch方法:

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

,而是這個:

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

使用此:

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

普拉克:http://plnkr.co/edit/Autg0V

+0

我已經更新了plunkr,但這似乎不工作... – Tropicalista

+0

@Tropicalista我看。我已經更新了我的答案,請看一下 – Cherniv