javascript - 不使用 angularjs 污染全局

标签 javascript angularjs

在 angularjs 中,我们将 Controller 定义到 window 中。虽然这不会与其他 js 模块和插件产生名称冲突,但这仍然不是一个好的做法:单个应用程序应该向全局命名空间公开单个对象。

这是通常的方式,在window中定义:

function UserController($scope) { ... }

HTML:

<div ng-controller="UserController">

这是我的想法:

myApp.UserController = function ($scope) { ... };

所以在这种情况下,我应该像这样从 html 启动 Controller

<div ng-controller="myApp.UserController">

你觉得怎么样?

最佳答案

解决这个问题的方法之一是在 Angular 本身中定义它,就像您所描述的那样。换句话说:

angular.module('YourApp').controller('ControllerName', function($scope) {})

我已经确认上述方法不会污染全局命名空间。

编辑:您也不需要使用 <div ng-controller="myApp.UserController">正如您可以在属性 ng-app 中定义 myApp: <body ng-app="myApp">这样你就可以调用 ng-controller 而无需每次都添加 myApp 前缀。

关于javascript - 不使用 angularjs 污染全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122214/

相关文章:

javascript - 使用d3 js的水平条形图

javascript - Angular - 仅当您单击 div 的特定区域时,div 上的 ng-click 才有效

javascript - for循环检查三个数组的索引是否匹配,如果匹配则创建不同的对象

javascript - 使用 FaceBook Javascript SDK 时遇到问题,无法访问 UI

javascript - 如何在 Google Map Api 3 的 InfoBox 窗口中隐藏关闭(x)按钮?

javascript - AngularJS 在屏幕上显示两个 View /模板

javascript - 如何将 for 循环转换为 AngularJs forEach?

javascript - "Controller"未注册 angularjs

javascript - 从 Handlebars 助手中的模板获取值

javascript - 在 for 循环中分配输入值