【问题标题】:Declaring controllers in AngularJS在 AngularJS 中声明控制器
【发布时间】:2016-07-02 16:49:36
【问题描述】:

我在 AngularJS 教程中看到,有些人这样声明他们的控制器函数:

function FirstController($scrope) {
    // do something with $scope
}

和其他人这样做:

var FirstController = function ($scope) {
    // do something with scope
}

哪种方式是在 JS 文件中声明控制器的最佳方式,最适合最新版本的 AngularJS(现在是 1.0.7),最佳实践是什么?还是真的不重要?

【问题讨论】:

标签: javascript function angularjs


【解决方案1】:

您应该遵循他们提供的第二个示例,它使用字符串来标识您的控制器,而不是潜在的全局函数。使用 Array 语法,这样您就可以缩小代码,而不必担心缩小器重命名函数参数。

var myApp = angular.module('myApp');

myApp.controller('GreetingCtrl', ['$scope', function($scope) {
    $scope.greeting = 'Hola!';
}]);

来源:http://docs.angularjs.org/guide/controller

【讨论】:

  • 没错,这在 angularjs 官方文档中有明确的解释。
  • 公平地说,Angular 文档中的第一个示例准确地显示了原始海报输入的内容。 Angular 团队应该删除该示例,因为这是不好的做法。
  • 老实说,这看起来确实令人困惑,除非您通读 angularJS 文档并了解发生了什么。
【解决方案2】:
myApp.controller('myControl',['$scope',function($scope){
    $scope.controlname = "Something";
}]);

【讨论】:

    【解决方案3】:

    声明控制器的推荐方式是使用数组表示法:

     someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope,  dep1, dep2) {
         ...
         $scope.aMethod = function() {
         ...
        }
      ... 
    }]); 
    

    根据 angularJS 网站:https://docs.angularjs.org/guide/di

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2014-08-29
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多