AngularJS:AppLevel 控制器可能吗?

2024-03-13

我有一个控制器,它是我的页面的控制器,但我想知道是否有可能有一个 AppLevel 控制器,即可以从每个页面访问的东西......所以每个页面实际上会分配超过 1 个控制器。

我知道我可能可以通过服务来做到这一点并注入服务,但我希望有某种可以分配的应用程序级别控制器。

如果可能的话,我将如何在两者之间进行通信?我假设使用依赖注入并将应用程序级别控制器传递到我的主页?

有人对此有什么想法吗?

thanks


AngularJS 利用 JavaScript 原型继承,以便作用域访问父作用域上的属性。您可以定义嵌套在 HTML 中的控制器并从子级访问父级。不过,我强烈建议您不要在“AppCtrl”中依赖这一事实。在某些情况下,您正在处理的作用域将被隔离,并且不会成为有权访问 AppCtrl 作用域的继承层次结构的一部分。

我建议为此创建一个服务,或者您可以将 pub/sub 与 $rootScope.$on 和 $rootScope.$broadcast 一起使用。

为了显示服务示例,我将使用单词 shellCtrl 和 shell service 而不是 app,以使示例更加清晰。

“shell”服务的工作是允许应用程序中的任何其他控制器、指令或服务与 shellController 交互,从而与主机视图容器交互。

<div ng-app="myApp" ng-controller="ShellCtrl">
    <div ng-controller="SomeOtherCtrl"></div>
</div>

// parent controller defined on the same element as ng-app
function ShellCtrl($scope, shell) {
    // I've just made the shell accessible to the $scope of shellctrl, but you can do
    // this in various ways.
    $scope.shell = shell;
}

// any other controller
function SomeOtherCtrl($scope, shell) {
    shell.setTitle('Some title');
}

// basic example of the shell service
angular.module('myApp').factory('shell', function () {
    return {
        title = 'No title set',
        setTitle = function (title) {
            this.title = title;
        }
    }    
});

现在,您可以以独立的方式在父控制器上设置属性,而无需依赖范围层次结构。

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

AngularJS:AppLevel 控制器可能吗? 的相关文章

随机推荐

  • 隐藏 IONIC-3 中的离子输入验证边框[重复]

    这个问题在这里已经有答案了 我使用的是 ionic 3 我想知道如何删除验证边框颜色 红色和绿色 I tried to removed using this css item inner border bottom color transp
  • 人类可读订单代码的完美哈希函数

    我正在尝试生成从 比方说 无符号 32 位内部 ID 派生的非连续人类可读订单代码 该 ID 从 1 开始 并针对每个新订单自动递增 在下面的示例代码中 每个 hash是独一无二的吗 我计划对 hash使其易于人类阅读
  • Java(14 及以上)instanceof 转换为泛型(例如 List

    我正在使用 Jackson 反序列化 JSON 有效负载 我有一些字段可以是对象或对象数组 所以在我的Java代码中我声明 class Outer private Object inner 我知道内在可以是Map
  • 从 Wikipedia API 中提取数据

    我希望能够使用 json 从维基百科中提取标题和描述 所以 维基百科不是我的问题 我是 json 的新手 想知道如何使用它 现在我知道有数百个教程 但我已经工作了几个小时 它只是不显示任何内容 这是我的代码
  • 如何通过peerJS 点对点连接接收数据?

    我正在尝试使用peerJS 连接两个对等点 我几乎只是在遵循他们的 入门 但我仍然在挣扎 下面是我到目前为止得到的代码
  • Java:从文件加载图像,编辑并添加到 JPanel

    我想将计算机中的图像加载到 2D Graphics 中 以便之后可以对其进行编辑 然后我想将其添加到JPanel 如果您需要查看我的项目 我可以将其发送给您 void loadImage FileDialog fd new FileDial
  • OSX 10.8 xcrun(没有这样的文件或目录)

    执行时gem install jekyll在 OSX 10 8 上安装了来自 Apple 开发人员站点的独立命令行工具包 无 Xcode 时 我遇到以下错误 构建本机扩展 这可能需要一段时间 错误 安装 jekyll 时出错 错误 无法构建
  • SQL 查询限制来自一个表的行,而不是结果集

    我正在运行一个带有连接的简单查询 类似于 SELECT t1 a t2 b FROM t1 LEFT JOIN t2 ON LIMIT 5 As t1有很多行t2 任何大于 2 的数字 LIMIT 语句不会返回前 5 行t1以及来自的相应条
  • const 有什么问题吗?

    已知的不足有哪些const在 C 和 C 0x 中 唯一的问题是const就是这样被严重低估许多开发商 它是 C 工具箱中最好的工具之一 非常锋利 但割伤自己并不危险
  • 禁用的 uibarbuttonitem 的文本颜色始终是正常状态的颜色

    我在我的代码中写道 UIBarButtonItem appearanceWhenContainedIn UINavigationBar class nil setTitleTextAttributes NSForegroundColorAt
  • 限制 Jenkins 仅针对特定分支进行并发构建

    我一直在寻找如何做到这一点一段时间 但我开始认为这是不可能的 与此类似的每个问题似乎都与限制某些节点或整个管道的运行更相关 我们在 Jenkins 中有一个多分支管道 用于处理 PR 构建 分阶段测试和生产发布 三者中的每一个都通过when
  • VC++ 缺少类型说明符 - 假定为 int。注意:C++ 不支持default-int [重复]

    这个问题在这里已经有答案了 以下代码在 VC 6 0 中编译得很好 但是当我在 VS2005 中打开该项目时 出现此错误 BCGPopupMenu h 100 错误 C4430 缺少类型说明符 int 假定 注意 C 不支持default
  • 为可移植类库创建 NuGet 包时出错

    我是 Nuget 新手 我正在尝试为可移植类库项目创建一个 NuGet 包 该项目对我创建的另一个可移植类库具有包依赖性 我遇到了一个问题 在调用时收到错误块包对于项目文件测试组件2 csproj 我从 VS 2013 中的 Portabl
  • &(单个与符号)和 | 是什么意思(单管)运算符进行比较运算?

    在这样的声明中 if valueA valueB 99 print they don t equal 99 什么是 运营商做什么 我认为这意味着如果 valueS 和 value 都不等于 99 则执行该块 然后什么是 在此声明中执行以下操
  • 在zf2中配置多个数据库

    如何在 Zend Framework 2 中配置 和使用 多个数据库 目前我的 global php 中有这个 return array db gt array driver gt Pdo dsn gt mysql dbname my db
  • Pythoncoverage.py 排除行

    背景 我有几个使用coverage py 的Django 项目 并且一直在尝试向我的 coveragerc 配置文件的exclude lines 部分添加一些额外的表达式 问题是 即使使用正确的正则表达式 也可以在测试器中拾取该行 例如ht
  • 删除字符串中的所有 HTML 标签(使用 jquery text() 函数)

    是否可以使用 jquery text 函数删除字符串中的所有 HTML 带有 HTML 标签的字符串 myContent div Hello span world span div 结果必须是 Hello world var myConte
  • C# 中字符串类型最快(内置)比较是什么

    C 中字符串类型最快的内置比较方法是什么 我不介意印刷 语义含义 目的是在排序列表中使用比较器以便在大型集合中快速搜索 我认为只有两种方法 Compare and CompareOrdinal 什么是最快的 此外 是否有更快的字符串比较方法
  • 拍照后编辑图像

    我目前正在制作一个 iPhone 应用程序 用户可以在其中拍照或从相册中选择照片 然后将覆盖层放置在图像上 然后用户可以缩放 旋转和保存图像 目前 我可以拍照 或者选择一张放入相册 至于覆盖层 我只是使用 UIImageView 并将其放置
  • AngularJS:AppLevel 控制器可能吗?

    我有一个控制器 它是我的页面的控制器 但我想知道是否有可能有一个 AppLevel 控制器 即可以从每个页面访问的东西 所以每个页面实际上会分配超过 1 个控制器 我知道我可能可以通过服务来做到这一点并注入服务 但我希望有某种可以分配的应用