在角度js中编写控制器的不同方法

时间:2015-10-03 17:40:17

标签: angularjs angular-controller

我是角度js的新手。如此不同的角度编码方法让我很困惑。我刚刚找到两种不同的方法来编写角度控制器声明。

第一种方法

angular.module('App', [])
      .controller('AppCtrl', function ($scope) {

          $scope.model = 0;

          $scope.initSlider = function () {

          };
    });

第二种方法

angular.module('MyApp', []);

function MyCtrl($scope) {
    angular.element(document).ready(function () {
        document.getElementById('msg').innerHTML = 'Hello';
    });
}

只看到控制器声明的第一个代码

.controller('AppCtrl', function ($scope) {
})

但是在第二个中,只是一个函数被声明为控制器

function MyCtrl($scope) { }

http://jsfiddle.net/tnq86/15/

http://jsfiddle.net/cVsdp/4/

告诉我两种不同的方法已经采取声明控制器? 哪一个是正确的,当人们遵循第二种方法,其中控制器字不用于声明控制器。我需要指南来理解2种不同的方法。

3 个答案:

答案 0 :(得分:1)

将第二个控制器中的逻辑放在一边。

第一个选项是推荐的选项。

第二个选项首先起作用的唯一原因是出于演示的目的,不应该使用。声明控制器的更多方式在1.3 +中已被弃用。

有关详细信息,请查看:https://docs.angularjs.org/guide/migration。特别是谈论控制器的部分。

从中提取:

  

$ controller将不再在窗口上查找控制器。查看控制器窗口的旧行为最初打算用于示例,演示和玩具应用程序。我们发现允许全局控制器功能鼓励不良做法,因此我们决定默认禁用此行为。

答案 1 :(得分:0)

你必须遵循

第一种方法

angular
.module('App', [])
      .controller('AppCtrl', function ($scope) 
      {
       //you code
      };
});

第二种方法

angular
.module('App', [])
      .controller('AppCtrl', ['$scope', function ($scope) {
        //you code
       };
}]);

第3种方法

angular.module('app')
    .controller('SomeController', SomeController);

function SomeController($scope) { 
      //you code
}

我想建议第二种方法,它也适用于缩小的JavaScript。 或者您也可以关注Angular Style Guide

答案 2 :(得分:0)

在我的企业中,我们正在开发角度,我们使用的风格我觉得它更清晰。

(function() {
  'use strict';

  function myController(_, $window) {
    ...
  }

  //Injections into the controller
  myController.$inject = ['lodash', '$window'];
  angular.module('myModule').controller('myController', myController);
})();