1

种子应用程序使用引用控制器的路由,控制器的定义如下:

function MyCtrl1() {} 
MyCtrl1.$inject = [];

寻找一个更好的例子(即)显示注入,也许是一个 HTTP 获取和更新范围?

谢谢。

4

1 回答 1

1

我不确定你到底想要什么,但这里有一个更复杂的例子。

控制器:

function MyCtrl1 ( $scope, $http ) {
  $http.get( '/some/location' ).success( function ( data ) {
    $scope.items = data;
  });
}
MyCtrl1.$inject = [ '$http' ];

看法:

<div ng-controller="MyCtrl1">
  <ul>
    <li ng-repeat="item in items">{{item.name}}</li>
  </ul>
</div>

评论:

在现实世界的场景中,$http 调用将位于您自己的服务中,而该服务将被注入到控制器中。另外,我建议不要在全局空间中定义控制器。定义相同控制器的更好方法如下:

angular.module('myApp', [])
.controller( 'MyCtrl', [ '$http', function MyCtrl1 ( $scope, $http ) {
  $http.get( '/some/location' ).success( function ( data ) {
    $scope.items = data;
  });
}]);

更新:

没有作用域的控制器是无用的——真的什么都做不了——所以 Angular 会自动将 $scope 注入到每个控制器中。必须请求注入所有其他服务。和MyCtrl1.$inject数组语法都是在缩小后仍然保持功能所必需的。如果您使用我的代码创建示例文件并删除该$inject行,它仍然可以工作。但是当您缩小 Javascript 时,变量名称会减少,因此我们将重要信息放在字符串中。

我建议阅读本教程以及观看AngularJS YouTube 频道上的一些视频,例如这个

于 2013-01-07T19:31:20.313 回答