-1

对于下面的代码,使用 angularJS,

<script type="text/javascript">
    angular.module('app').controller('add', ['$scope',function($scope) {
           $scope.name = "Bonita Ln";
    }]);
</script>

访问$scope变量成员的相应Javascript代码name是,

<div ng-app="app" ng-controller="add">
   <script type="text/javascript">
       var dom_el = document.querySelector('[ng-controller="add"]');
       var ng_el = angular.element(dom_el);
       var ng_el_scope = ng_el.scope();
       var name = ng_el_scope.name;
   </script>
</div>

下面是角度代码,使用角度表达式访问ng-init变量,name

<body ng-app="">
    <div ng-init="name='Bonita Ln'">
        {{name}}
    </div>
</body>

如何使用 JavaScript访问ng-init变量?name

4

2 回答 2

0

您可以通过访问$scope.name控制器中的变量来做到这一点,但它必须在您的范围内定义。

<div ng-init="name='Bonita Ln'">
  {{name}}
<div ng-controller="MyCtrl">
  Hello, {{name2}}!
  </div>
</div>


angular.module('myApp',[]).controller('MyCtrl',function($scope) {
    $scope.name2 = $scope.name;
})

这有效,因为您已在控制器的父范围中定义名称,并且正在被继承

但如果对于相同的控制器 html 模板将如下所示:

<div ng-controller="MyCtrl">
<div ng-init="name='Bonita Ln'">
  {{name}}
Hello, {{name2}}!
  </div>
</div>

那么它将不起作用,因为调用控制器函数时变量未定义

于 2016-01-11T09:47:44.217 回答
0

您可以以完全相同的方式使用它,但您不应该这样做。

我对你的问题投了反对票,因为这真的是非常糟糕的做法,我的意思是你提供的每一行代码都是不好的做法。

我正在努力找出你想做什么,所以我真的不能为你提供更好的代码来做这件事,但我可以为你提供一些你必须先检查的链接,然后再继续你的工作现在编码。

  • Shaping up with Angular是 Angular 团队提供的免费 codeschool 课程,它是一门非常好的课程,比起 Angular 网站上的电话教程,它可以让你更深入地了解如何使用 Angular。
  • Papa Johns Angular styleguide是关于如何编写可维护代码的绝佳指南。
  • thinkster.io学习掌握 Angular 的分步指南
  • egghead.io一个很好的视频教程集合

我知道我的评论听起来很刺耳,但是如果您编写更标准化的 Angular 并遵守定义的样式指南,将来您会感谢您。
还要记住,在 Angular 中,你的代码不应该知道 DOM,你不需要为 DOM 元素指定 eventListeners,只需使用适当的指令,如ng-click.
(是的,我知道该规则可能有例外)

于 2016-01-11T09:50:07.110 回答