0

我是 AngularJS 的新手,我发现它很棒。

然而,由于我以前使用 jQuery,并且我总是使用匿名自执行函数来保持我的私有变量和方法不可访问,所以只将所需的导出到 DOM(全局window对象)。

而当我一步步按照AngularJS教程进行操作时,我发现我所有的控制器方法都被导出到了DOM中,不知道这是合理的还是可以避免的?

4

1 回答 1

1

AngularJS 只使$scope元素在 DOM 上可用。这也是使用插值或表达式的控制器,

如果您采用模块方法来创建控制器并在控制器中正确定义属性和方法。没有框架的帮助,它们无法在 DOM 内部访问。

在这种情况下,控制器应定义为

angular.module('MyModule')
   .controller('MyCtrl',function(['$scope',function($scope){
        $scope.myVar=1;
        $scope.myFunction=function() {}
        var myPrivatevar=2;
        var myPrivateFunction=function() {}
}]));

在您的 HTML 中,只有myVarandmyFunction会被暴露用于直接插值或表达式绑定,其他任何东西都已被封装在 DOM 之外。

于 2013-09-12T06:54:27.713 回答