Skip to main content
 首页 » 编程设计

AngularJs 指令观察异步数据

2024年08月12日6lexus

我正在尝试将 PrettyPrint 与一些 Ajax 数据一起使用。问题是,当调用指令时,数据尚未准备好,因此我得到 undefined variable 输出。

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

请您参考如下方法:

使用范围$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