【发布时间】:2015-10-03 17:40:17
【问题描述】:
我是 Angular 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) { }
告诉我已经采取了两种不同的方法来声明控制器? 哪一个是正确的,当人们遵循不使用控制器字来声明控制器的第二种方法时。我需要指南来理解 2 种不同的方法。
【问题讨论】:
-
第二种方法无效,不起作用。
-
查看 js fiddle 链接然后你可以看到第二个正在工作。
-
你是对的,它有效。但这是不好的做法。您应该使用
.controller()函数来注册控制器。否则,您将在window上声明它,这是明确不推荐的。 docs.angularjs.org/api/ng/service/$controller -
仅适用于旧版本...全局函数不适用于 1.3 及更高版本。现在必须在模块上下文中声明控制器。这是他们摆脱的旧惯例
-
@ZenDD 不正确...在 1.2 及以下版本中可以正常工作jsfiddle.net/cVsdp/310
标签: angularjs angular-controller