加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 何时直接使用$scope?

发布时间:2020-12-17 07:38:18 所属栏目:安全 来源:网络整理
导读:我刚刚开始使用Angular,并且已经阅读了很多教程. 现在 the free one at CodeSchool这是我的起点,根本没有提到$范围. 从我收集的内容中,controllerAs语法是相对较新的(1.2.0),但是似乎允许您直接使用$scope. 一些文章说“使用控制器”和解释,但大多数只是使用
我刚刚开始使用Angular,并且已经阅读了很多教程.
现在 the free one at CodeSchool这是我的起点,根本没有提到$范围.

从我收集的内容中,controllerAs语法是相对较新的(1.2.0),但是似乎允许您直接使用$scope.

一些文章说“使用控制器”和解释,但大多数只是使用$范围.但是我找不到任何解释为什么选择它.

这是否现在主要是有利于一个人的情况,还是仍然有理由使用$范围?

即使许多新的指令插件也可以使用它,而不是允许您将其绑定到特定的控制器.

编辑:要澄清,我想知道什么时候使用$scope,不是不使用的原因:)

我可以给你的最好的答案是:

短:

>每当您想要向模板公开逻辑时,使用范围.
>每当你想要保持一个元素的逻辑,使用ngController.
>如果要直接在模板中显示控制器的值(通过范围),请使用“控制器作为语法”.

长:

一个解释

范围或$范围,就像您所说的那样,是我们维护值(无论类型:函数,对象,字符串等)可用于该范围内的模板的位置.例如,考虑以下几点:

HTML:

<div ng-controller="MyCtrl">
  <div>{{ message }}</div>
</div>

<div ng-controller="MyCtrl as ctrl">
  <div>{{ ctrl.message }}</div>
</div>

看到这些内插?那么,猜猜是什么?他们都访问范围. “控制器作为语法”为MyCtrl创建一个别名,并在本地作用域上发布.一旦元素被链接,如果你看到$scope,你将会发现一个暴露控件的属性ctrl.

Javascript

function MyCtrl($scope) {
  $scope.message = "controller MyCtrl";
  this.message = "controller as syntax";
}

在哪里我使用MyCtrl这两个消息是可用的.但是要容易地访问控制器本身的值,我们使用“控制器作为别名”语法.

他们老实说是两种不同的方法.控制器作为*语法允许开发人员将控制器放在示波器上,更容易访问所述控制器.所以,最终都是在范围之上.否则,通过指令的链接功能,你必须访问控制器的require属性.控制器的方法和属性不一定需要暴露于模板,而只是在逻辑中使用. (此外,您还可以通过jqLit??e的data()函数访问控制器).

有时,当控制器传播到多个元素时,我们希望默认情况下可以使用该控制器的每个元素.这在创建指令时特别有价值.看看ngModel,看看我们有多种方法与使用ngModel的每个元素共同.

范围与控制器

要考虑的主要问题是子控制器可以继承其父级的范围.很酷的是,子范围将从父级继承父节点控制器属性的位.

<!-- ctrl1 -->
<div ng-controller="MyCtrl as ctrl1">
  <div>{{ ctrl1.message }}</div>
  <!-- ctrl2 -->
  <div ng-controller="MyCtrl as ctrl2">
    <div>{{ ctrl2.message }}</div>
  </div>
</div>

请注意,两者都使用相同的控制器,但它们具有不同的别名.现在,控制器属性通过Scope传递给孩子.所以孩子可以通过它的别名访问父母.所以,通过这个语法,你可以清楚地看到MyCtrl的两个实例的分离.他们在他们的范围上都有一个消息属性,但它们很容易区分,而不需要通过父母,孩子,兄弟姐妹等进行挖掘.

结论是

如果要将值显示给模板使用范围.如果要将值绑定到不一定需要在模板中公开的元素,请使用控制器.如果您需要从模板中的控制器访问值,请使用控制器作为语法.将控制器用作*语法将控制器的值放置在语法中创建的别名下的范围上.因此,在这种情况下,您同时使用控制器和范围.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读