1

我看到很多 Angular 代码更像这样。以下是来自他们的教程。

angular.module('phonecat', ['phonecatFilters', 'phonecatServices']).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider.
      when('/phones', {templateUrl: 'partials/phone-list.html',   controller: PhoneListCtrl}).
      when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}).
      otherwise({redirectTo: '/phones'});
}]);

但是,我更熟悉这样的;

var app = angular.module('phonecat', ['phonecatFilters', 'phonecatServices']);
app.config(function($routeProvider) {
  $routeProvider.
      when('/phones', {templateUrl: 'partials/phone-list.html',   controller: PhoneListCtrl}).
      when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}).
      otherwise({redirectTo: '/phones'});
}]);

我什至想将它定义function($routeProvider) { ...}为一个变量,但我不相信它会起作用。

在这种情况下,是否有避免全局变量的原因app

或者这只是 AngularJs 社区的最佳实践之一?

4

2 回答 2

1

命名空间很好。最佳实践是使用angular.value而不是全局变量

app.value('myVariable', 'myValue')
   .controller('myController', function($scope, myVariable) {
       ...
    }); 
于 2013-09-18T21:45:04.840 回答
1

angular.module(..) 返回一个模块,你可以;

  1. 分配给变量 app(这是一个全局变量)。
  2. 或继续链接它

你看到了很多链接的例子,因为它在一个文件中。

您还将看到很多使用全局变量“app”或其他的示例,因为代码需要组织到许多文件中。

如果您制作单个文件示例,我推荐第一个。
如果您制作需要名称间距的实际应用程序,我推荐第二个。

于 2014-01-04T17:56:52.443 回答