在JavaScript中访问Angular.JS控制器的name属性(为什么它是模块的名称?)

时间:2014-12-11 15:22:13

标签: angularjs

我有some simple Angular.js code我不明白。

HTML:

<div ng-controller="MyCtrl">
  Hello, {{name}}!
</div>

JavaScript的:

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

var controller = myApp.controller('MyCtrl', ['$scope', function ($scope) {
    $scope.name = 'Superhero';
}]);

alert(controller.name);

HTML指令产生了我所期望的:“你好,超级英雄!”呈现给页面。但警报框令人困惑。我希望它显示字符串“Superhero”,或者可能是控制器的名称“MyCtrl”,但它实际显示的是模块的名称“MyApp”。为什么?我需要传递给alert以显示分配给控制器范围的名称(即“超级英雄”)或控制器本身的名称(即“MyCtrl”)?

(N.B。我确实试过the documentation,但它没有帮我解释为什么控制器报告模块的名称而不是它自己的名称。)

1 个答案:

答案 0 :(得分:1)

您想要从遗留代码中访问角度代码。

我这样做的方法是使用angular.element:

<div id="myDiv" ng-controller="MyCtrl">
  Hello, {{name}}!
</div>   

var theScope = angular.element(getElementById('myDiv')).scope();
alert(theScope.name);