当前位置: 首页 > 面试题库 >

Angular中“ Controller as”的优点是什么?

林英朗
2023-03-14
问题内容

在Angular中使用“ Controller as”语法有什么好处?只是为控制器创建别名还是在幕后有其他技术原因?

我是Angular的新手,想进一步了解这种语法。


问题答案:

controllerAs-syntax具有多个优点:

克拉蒂

考虑以下示例:

<div ng-controller="containerController">
    <h2>Improve your life!</h2>
    <p ng-controller="paragraphController">
        We talk about {{topic}} a lot, but do we really understand it? 
        Read this article to enhance your knowledge about {{topic}}
    </p>
</div>

仅通过阅读这段代码,您就无法分辨出哪里topic来的。它是否属于containerControllerparagraphController或仅仅是上面的sone输入的随机浮动范围变量?

通过使用controllerAs它很清楚:

<div ng-controller="containerController as container">
    <h2>Improve your life!</h2>
    <p ng-controller="paragraphController as paragraph">
        We talk about {{paragraph.topic}} a lot, but do we really understand it? 
        Read this article to enhance your knowledge about {{paragraph.topic}}
    </p>
</div>

您可以立即看到这topic是的属性paragraphController。这使代码在整体上更具可读性,因为它迫使开发人员明确谁属于函数和变量scope

绑定到属性

当您使用旧controller语法时,如果您在不同范围内对“ same”变量具有多个绑定,则可能会发生奇怪的事情。考虑以下示例:

<form ng-controller="myFormController">
    <input type="text" ng-model="somefield">

    <div ng-controller="someOtherController">
        <input type="text" ng-model="somefield">
    </div>
</form>

看起来两个input都绑定到同一个变量。他们不是。当您编辑第input一个时,一切看起来都正常,但是一旦编辑第二个,它们将不再同步。这与范围继承和绑定的工作方式有关。在绑定到对象属性(也就是当有这不会发生.在你的ng-model-attribute)。controllerAs无论如何,通过绑定到控制器对象的属性,它自然可以解决该问题:

<form ng-controller="myFormController as myForm">
    <input type="text" ng-model="myForm.somefield">

    <div ng-controller="someOtherController as other">
        <input type="text" ng-model="myForm.somefield">
    </div>
</form>

摆脱scope(大部分)

使用scope来创建controller旧的角度代码中的s的绑定很难读,很难理解,如果使用,则完全没有必要controllerAs。您不再需要注入scope每个元素controller,实际上,在大多数应用程序中您可能都不会注入它(如果要使用角度事件系统,则仍然需要这样做)。这样可以使控制器代码更简洁,样板更少。

为Angular 2做准备

在angular2中,scope将消失,我们将所有内容都编写为component。使用controllerAs让您无需工作就可以工作,scope并迫使您考虑面向组件的更多,从而为您(以及最终将要迁移的应用程序)为2.0更新做好准备。



 类似资料:
  • 从评论来看: 有人能解释一下它是如何有效的吗?仅仅是它避免拳击的事实就足够了吗?

  • 本文向大家介绍什么是smarty? Smarty的优点是什么?相关面试题,主要包含被问及什么是smarty? Smarty的优点是什么?时的应答技巧和注意事项,需要的朋友参考一下 Smarty是一个使用PHP写出来的PHP模板引擎,目的是要使用PHP程序同美工分离,使的程序员改变程序的逻辑内容时不会影响到美工的页面设计,美工重新修改页面时不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

  • 问题内容: 只是想知道TreeSet的优缺点是什么,是否有人可以告诉我?谢谢! 问题答案: 收藏类之一。它使您可以按键或按键顺序访问集合中的元素。它比ArrayList或HashMap具有更多的开销。当您不需要顺序访问时,只需按键查找即可使用HashSet。使用ArrayList并使用Arrays。如果只想按顺序排列元素,则排序。TreeSet始终保持元素顺序。使用ArrayList,您可以在需要

  • 本文向大家介绍什么是 Netflix Feign?它的优点是什么?相关面试题,主要包含被问及什么是 Netflix Feign?它的优点是什么?时的应答技巧和注意事项,需要的朋友参考一下 Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。在 e

  • 本文向大家介绍什么是pytest?其优点是什么?,包括了什么是pytest?其优点是什么?的使用技巧和注意事项,需要的朋友参考一下 Pytest是python中的测试框架。要安装pytest,我们需要使用命令pip install pytest。安装后,我们可以通过pytest –version命令验证是否已安装python 。pytest的版本应该是已知的。 Pytest可用于创建和执行测试用例

  • 问题内容: 初始化的优点或区别是什么? 而不是简单地使用: (是:) 非常感谢您的帮助。 问题答案: 惰性存储属性vs存储属性 具有惰性属性而不是存储属性有一些优点。 仅当您读取该属性时,才执行与lazy属性关联的闭包。因此,如果出于某种原因未使用属性(可能是由于用户的某些决定),则可以避免不必要的分配和计算。 您可以使用存储属性的值填充惰性属性。 您可以在内部使用惰性属性关闭