Angularjs - 控制器继承与范围继承

2023-11-30

下面是使用范围继承的代码,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title> Controller inheritance</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
        <script type="text/javascript">
            var sample = angular.module("sample", []);

            function ParentController(){
                this.Name = "Jag";
            }

            sample.controller("emp", ParentController);

            function ChildController(){
                this.Sal = 3500;
                this.Dept = "Sales";
            }

            sample.controller("empDetails", ChildController);
        </script>
    </head>s
    <body ng-app="sample">
        <div ng-controller="emp as o1">
            Employee details of <strong>{{o1.Name}}</strong>:
            <div ng-controller="empDetails as o2">
                <strong>{{o1.Name}}</strong> earns {{o2.Sal}} and works in {{o2.Dept}} department.
            </div>  
        </div>

    </body>
</html>

控制器实例的嵌套范围o2必须参考Name as o1.Name.

下面是控制器继承的代码,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title> Scope inheritance</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
        <script type="text/javascript">
            var sample = angular.module("sample", []);

            function ParentController(){
                this.Name = "Jag";
            }
            sample.controller("emp", ParentController);

            function ChildController(){
                ParentController.call(this);
                this.Sal = 3500;
                this.Dept = "Sales";
            }
            ChildController.prototype = Object.create(ParentController.prototype);
            sample.controller("empDetails", ChildController);
        </script>
    </head>
    <body ng-app="sample">
        <div ng-controller="emp as o1">
            Employee details of <strong>{{o1.Name}}</strong>:
        </div>
        <div ng-controller="empDetails as o2">
                <strong>{{o2.Name}}</strong> earns {{o2.Sal}} and works in {{o2.Dept}} department.
        </div>

    </body>
</html>

其中范围o2不是嵌套的。

为了设计继承层次结构,AngularJS 推荐使用哪种方法?

注:术语控制器继承不是标准术语。


我不知道 AngularJS 推荐什么,但这是我的想法。

首先,我以前从未考虑过控制器继承。但现在我已经看到了它,我第一眼就能发现一些潜在的麻烦。

  1. 在这种情况下ParentController没有依赖关系,所以事情进展顺利。但考虑到稍后您需要向其添加某种依赖项(服务),您必须记住在中请求该服务ChildController然后将其传递给ParentController用手。如果你问我的话,这是一个很大的烦恼。

  2. 如果我们看一下 html,第一种方式(正常范围继承)很明显:ChildController确实需要ParentController。第二种情况使事情变得更难看到,如果我查看 html,我发现两个控制器之间没有任何关系。

所以对我来说,范围继承(这实际上是默认的处理方式)在各个方面都优于控制器继承。

我相信 AngularJS 团队本身没有考虑过控制器继承(但不要因此而束缚我),所以最好坚持可验证的做事方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs - 控制器继承与范围继承 的相关文章

随机推荐

  • 如何使用弹性框重新排序 div?

    我试图为我的 DOM 保持 seo 友好和语义结构 而不重复整个元素以在不同位置显示它们 我的布局基于display flex项目 我尝试实现以下目标 需要了解的重要事项 我不想根据窗口宽度显示 隐藏 div 以避免不必要的重复 所有 di
  • 移动时修改 SKNode 的属性

    我有一个 SKNode 的子类 它充当我的 生物 它们使用 SKActions 自动在场景中移动 我有兴趣在生物移动时修改 减少 能量 属性 Int 不保证生物能够移动 SKAction 的整个长度 它可以被中断 因此计算总距离然后在它开始
  • NetBeans 的启动屏幕功能如何工作?

    NetBeans 新手 刚刚注意到文件 gt gt 项目属性 gt gt 应用程序对话框有一个标记为的文本字段启动画面它允许您指定程序启动时要显示的图像的路径 我想自定义启动屏幕的工作方式 添加进度条等 并且想从头开始编写代码 但不知道从哪
  • 如何更改闪亮的应用程序数据表输出字体颜色和辅助表元素颜色?

    我正在使用深色主题 闪亮主题中的石板 创建一个闪亮的应用程序 但是当我应用该主题时 我的 renderDataTable 输出存在两个问题 应用程序背景太暗 看不到表格外的元素 显示 XX 条目 底部页码等 表中的文字太浅 难以阅读 对于问
  • Django 使用 AJAX 在模板中渲染模板

    我的网站目前在自己的页面上呈现表单 我正在尝试让它们在我的主页上的侧边栏 div 标签内呈现 但是 我不知道如何塑造 JavaScript 和 或视图 因此我取回表单模板的 HTML 并将其插入到 div 标记中 UPDATE 我在控制台中
  • 如何使用 HSSF (Apache POI) 在现有 Excel 中的两行之间插入一行

    不知何故 我设法在现有 Excel 文件中的两行之间创建新行 问题是 一些格式没有包含在行的移动中 其中之一是隐藏的行在轮班期间没有相对地进行 我的意思是 例如 第 20 到 30 行被隐藏 但是当创建新行时 格式仍然存在 在插入 创建新行
  • Javascript 多个键具有相同的值 - 它们是否指向同一个地方?

    我有以下简化代码 var obj key1 aliases alias1 alias2 prop1 someVal prop2 someOtherVal var objHashMap for var key in obj objHashMa
  • 在 2D 列表中查找值的 Pythonic 方法? [复制]

    这个问题在这里已经有答案了 使用 numpy 数组 您可以使用切片检查特定列 即array 0 对于列表 检查 2D 元素是否在内部非常简单 one two in some list 然而 只是看看是否 one 存在需要迭代元素 即 one
  • pandas 基于独特的价值观和标准

    我有这个数据框 df in pd DataFrame id 123 123 123 123 123 456 ven group a a a b f f date 1 1 21 2 1 21 3 1 21 1 1 21 1 1 21 1 1
  • 输入数组而不知道其大小

    有没有一种方法可以在 Java 中创建一个数组 而无需先定义或询问其长度 又名用户输入一些数字作为参数 程序创建一个包含这么多参数的数组 有没有一种方法可以在java中创建一个数组 而无需先定义或询问它的长度 又名用户输入一些数字作为参数
  • 如何编写降序排序键函数?

    最近版本的 Python 中传递一个key功能为sort 从上一个cmp函数使我对某些对象执行复杂的排序变得更加困难 例如 我想使用一组字符串决胜字段对一组对象从最新到最旧进行排序 所以我希望日期按相反顺序排列 但字符串按自然顺序排列 使用
  • 如何在 symfony 4 中公开 LoggerInterface 服务

    我希望有Psr Log LoggerInterface在 symfony 中 public 以便能够直接从容器中获取它 container gt get Psr Log LoggerInterface 我尝试了以下方法services ya
  • 使用 SSLEngine (JSSE) 与旧客户端进行 SSL 握手

    这是 的后续问题 使用自签名证书和 SSLEngine JSSE 进行 SSL 握手 我已经实现了一个 NIO Web 服务器 可以在同一端口上处理 SSL 和非 SSL 消息 为了区分 SSL 和非 SSL 消息 我检查入站请求的第一个字
  • 如何使用InputStream从ZIP读取文件?

    我必须使用 SFTP 从 ZIP 存档 只有一个文件 我知道它的名称 获取文件内容 我唯一拥有的是 ZIPInputStream 大多数示例显示如何使用此语句获取内容 ZipFile zipFile new ZipFile location
  • 使用委托将数据传递回先前的 VC 并更新自定义单元

    我正在尝试传递数据BACK到上一个viewController使用代表 有谁知道如何从ViewController B to ViewController A 所以我想传递数据SecondVC to FirstVC并使用来自的数据更新自定义
  • 为什么我的 @Autowired 对象为空?

    我有以下 JSF 托管 bean package com example import java io Serializable import javax faces bean ManagedBean import org springfr
  • 如何在iPhone应用程序中显示不同的自定义阿拉伯字体?

    在我的应用程序中 我需要使用不同的自定义字体显示阿拉伯语文本 我按照场景添加ttf文件到info plist 根据上面的场景 我成功获得了不同字体样式的显示文本ENGLISH纯文本 我正在做同样的事情arabic字体样式 但在这里我没有得到
  • 关于值类型装箱的混乱

    在下面的代码中 int i 5 object o 5 Console WriteLine o prints 5 我有三个问题 1 获得了哪些附加 有用的功能5驻留在变量中o那5由变量表示i不具有 2 如果某些代码需要值类型 那么我们可以将
  • 我的 CSS 不会链接到我的 HTML 文件

    我正在尝试在 Sublime Text Editor 2 中构建一个简单的网站 但是 我的 CSS 文件不会链接到我的 HTML 文件 因此不会打印纯文本 我的 HTML 代码是
  • Angularjs - 控制器继承与范围继承

    下面是使用范围继承的代码