控制器中的AngularJS范围问题

时间:2014-05-14 15:55:02

标签: javascript angularjs

下面是我的视图代码和控制器中的代码摘要。

查看:

<div id="search_results" ng-controller="SearchCtrl">
   <ul>
      <li ng-repeat="result in results">{{result.name}}</li>
   </ul>
</div>

控制器:

   myapp.controller('SearchCtrl', function($scope,SearchF) {    
      $scope.launch_search = function() {
         SearchF.update(function() {
            $scope.results = SearchF.get();
         });
      }
   })

函数.get()返回我的数据,但视图不会更新。看起来我的范围($ scope.results)没有引用一般范围。如果我在launch_search函数之外编写.update()块,则视图会更新。

有什么想法吗?

非常感谢大家

3 个答案:

答案 0 :(得分:1)

.get()是异步调用,如果它正在使用ngResource,则在回调中分配数据:

 SearchF.get({}, function(data) {
     $scope.results = data;
 });

答案 1 :(得分:1)

解决方案是使用$scope.$parent.results来引用父范围。

答案 2 :(得分:0)

当然,有些人必须触发你的功能吗?

点击您的视图更新后,点击ng-click="launch_search()"按钮。如果您希望在加载检查时更新视图

How to execute angular controller function on page load?