javascript - 如何在单独的文件中定义 Controller

标签 javascript angularjs

假设我有一个通过 AngularJS 1.x 编写的 SPA。

它有一个 app 模块,定义如下:

var app = angular.module('app', ['ngAlertify', 'ngRoute', 'ui.bootstrap'])

我还有几个在单独的 *Ctrl.js 文件中定义的 Controller 。定义它们的适当方法是什么?

我在这里看到两个选项。第一个是

app.controller('LoginCtrl', function($scope) { /* ... */ });

第二个是

angular.module('app').controller('LoginCtrl', function($scope) { /* ... */ });

哪一种更好且最常用?使用它们有什么缺点吗?

最佳答案

如果我正确理解你的问题,那么你想知道两者之间的区别

app.controller('LoginCtrl', function($scope) { /* ... */ }); 

对比

angular.module('app').controller('LoginCtrl', function($scope) { /* ... */ });

在上面两个方法中,app 是一个全局对象,您在 app.js 中声明它,例如

var app = angular.module('app',[]);

在本例中,app 是一个全局变量,可以在整个应用程序中访问它。我认为使用全局变量不是一件好事 在我们的应用程序中。

在第二种方法中,我们使用全局 Angular 对象来创建 Controller ,这样我们就不会使用全局变量。在这种情况下 app.js 看起来像

(function(){
  'use strict';
  var app = angular.module('app', []);
    ....
    ....
    ....
    ....
})

在这种情况下,app 变量将在除此文件之外的任何地方可用。

所以我相信第二种方法比第一种方法更好。

关于javascript - 如何在单独的文件中定义 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42436072/

相关文章:

javascript - 有没有理由在 Internet Explorer 中用 Script 替换 JavaScript?

javascript - 无法通过 $scope 获取 ng-model 的值

javascript - GruntJS 可配置首次运行

javascript - Angular 1 : Last checkbox doesn't stay checked after page refresh

javascript - 如何在 Breeze 中获取EntityWithErrors 中的错误

javascript - 如何删除水平固定导航栏中列表项之间的 "gaps"

javascript - Eslint 报告依赖项配置的 eslintrc 配置问题

javascript - 即使按正确顺序包含所有必要的脚本后,AngularJS-Slick 也无法正常工作

javascript - 想要在另一个div ng-if中引用ng-repeat中的变量。 AngularJS

javascript - 无法在数组上进行双向数据绑定(bind)