2013-07-17 119 views
0

我很新的角js,但它看起来像我的简单的代码应该工作。下面是HTML:角度范围变量没有数据

<body ng-app="MyHomepage"> 
    <div ng-controller="RedditLoad"> 
     {{a}} 
     <ul> 
      <li ng-repeat="article in a"> 
      {{article.data.title}} 
      </li.... 

这里是我angualr_app.js:

var App = angular.module('MyHomepage', []) 
    function RedditLoad($scope){ 
     $.getJSON("http://www.reddit.com/.json?jsonp=?", function(data) { 
      var data_array = []; 
      $.each(data.data.children, function(i,item){ 
       data_array.push(item); 
      }); 
      console.log(data_array); 
      $scope.a = data_array; 
     }); 
    } 

我在做什么错?的console.log(data_array中);显示正确的值,但数据似乎不会传递给模板。

回答

1

getJSON回调未在角度上下文中执行,因此角度不知道您的更改,也不会刷新绑定。当从外部源(如jQuery事件)调用代码时,您必须将范围更改封装在$ apply调用中:

$scope.$apply(function{ 
    $scope.a = data_array; 
} 
+0

谢谢。这解释了很多。这解决了这个问题。 – user2295420