2014-01-08 33 views
-1

我正在尝试使用AngularJS应用程序种子,并得到一些奇怪的结果。AngularJS中的控制器

在view2.html我:

<div ng-controller="view_ctrl_2"> 
    <div id="view2"> 
     <table class="table table-striped"> 
      <thead> 
       <tr> 
        <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> 
       </tr> 
      </thead> 
      <tr ng-repeat="entry in entries"> 
       <td>{{entry.col1}}</td> <td>{{entry.col2}}</td> <td>{{entry.col3}}</td> <td>{{entry.col4}}</td> 
      </tr> 
     </table> 
    </div> 
</div> 

,在我controllers.js文件我有

angular.module('myApp.controllers', []) 
    .controller('view_ctrl_2', [function() { 
     var entries = [ 
       { "col1":"val01", "col2":"val02", "col3":"val03", "col4":"val04" }, 
       { "col1":"val05", "col2":"val06", "col3":"val07", "col4":"val08" }, 
       { "col1":"val09", "col2":"val10", "col3":"val11", "col4":"val12" } 
     ]; 
    }]); 

但是,我没有得到网页上的任何输出。它显示了表格,但ng-repeat没有在其上放置任何行。我的猜测是我缺少一些与$ scope变量有关的事情?

+1

而不是var条目,它需要是$ scope.entries。只有$ scope变量在控制器外部可见。 –

回答

5

您需要添加entries到$范围:

angular.module('myApp.controllers', []) 
    .controller('view_ctrl_2', ['$scope', function($scope) { 
     $scope.entries = [ 
       { "col1":"val01", "col2":"val02", "col3":"val03", "col4":"val04" }, 
       { "col1":"val05", "col2":"val06", "col3":"val07", "col4":"val08" }, 
       { "col1":"val09", "col2":"val10", "col3":"val11", "col4":"val12" } 
     ]; 
    }]); 

请注意:$scope被注入到控制器['$scope', function($scope)...和使用$scope.entries=代替var entries=

为了进一步详细描述,所有依赖因为控制器需要注入。如果你正在做一些http调用并使用promises,它看起来像这样:

.controller('view_ctrl_2', ['$scope', '$q', '$http', function($scope, $q, $http) 
+0

有趣。我是在讨论范围是否与否,我没有意识到需要以这种方式通过。我会尽快接受它。 – Jacobm001

+0

是的,包括服务在内的所有依赖项都被注入,无论它是$ scope,$ rootScope,$ q,$ http还是其他任何东西。 – lucuma