一尘不染

在运行时动态分配ng-controller

angularjs

我有一种需要动态更改控制器的情况,以便相应地影响范围变量。总体结构:

<div ng-controller="GameController">
   // some general HTML which fits all types of games
    <div ng-controller="someScopeVar"> // Type of game
      // some game-type-specific ng-models that should respond to the change of controller, i.e scope
    </div
</div>

我在这里看到它可以在一个ng-repeat。可以在外面做吗?换句话说,我可以告诉angular将其读取为变量而不是字符串文字吗?


阅读 235

收藏
2020-07-04

共1个答案

一尘不染

正如评论中所讨论的那样,angular具有用于处理这些情况的强大 功能/库 - (具有强大的
Wiki ui- router

ui-router是需要开发功能块- 状态 的答案,而不是在视图/ URL中进行思考 (从首页引用)

AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到 状态机中 。与Angular
ngRoute模块中的 $ route 服务不同,Angular ngRoute模块是围绕URL路由UI-Router组织的,而是围绕
state进行 组织的, state 可以有选择地附加路由以及其他行为。

有一些非常有趣的博客文章:

…关于AngularJS的新路由器,最有趣的不是路由器本身,而是它附带的状态管理器。而不是针对要针对给定URL呈现的控制器/视图,而是针对状态。状态以层次结构进行管理,提供父状态的继承和页面组件的复杂组成,而在本质上始终保持声明性…

ui-router完全包含路由系统的状态机性质。它允许您 定义状态 ,并将应用程序 转换 为这些状态。真正的好处是,它可以
使嵌套状态解耦 ,并以优雅的方式进行一些非常复杂的布局。

正是我们需要的一点-解耦子状态… 实际上实际上动态更改控制器 …可以通过更改URL或仅通过状态更改
(一个同级子而不是其他不进行URL更改)

您需要对路由进行一些不同的思考,但是一旦您掌握了基于状态的方法,我想您会喜欢的…

最后,链接很少,我将其标记为ui-router的圣杯

  • 示例应用程序。实际上,我们可以看到ui路由器状态机的工作方式。我们可以加载 列表 作为 家长状态 ,那么我们可以选择行项目,这的确代表了自己的 孩子的状态 ......而家长没有重装 这里我试图解释它的更多细节)

  • state.js -示例应用程序的基本代码。这是我见过的记录最好的代码片段之一……花了一些时间来完成,这将为您提供80%的答案:ui-Router工作原理

根据我的经验,这确实适用于小型应用程序以及大型系统……喜欢它……

2020-07-04