在 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/