我有一种需要动态更改控制器的情况,以便相应地影响范围变量。总体结构:
<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将其读取为变量而不是字符串文字吗?
ng-repeat
正如评论中所讨论的那样,angular具有用于处理这些情况的强大 功能/库 - (具有强大的 Wiki ) 。 ui- router
angular
ui- router
这ui-router是需要开发功能块- 状态 的答案,而不是在视图/ URL中进行思考 (从首页引用) :
ui-router
AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到 状态机中 。与Angular ngRoute模块中的 $ route 服务不同,Angular ngRoute模块是围绕URL路由UI-Router组织的,而是围绕 state进行 组织的, state 可以有选择地附加路由以及其他行为。
UI-Router
有一些非常有趣的博客文章:
…关于AngularJS的新路由器,最有趣的不是路由器本身,而是它附带的状态管理器。而不是针对要针对给定URL呈现的控制器/视图,而是针对状态。状态以层次结构进行管理,提供父状态的继承和页面组件的复杂组成,而在本质上始终保持声明性…
… ui-router完全包含路由系统的状态机性质。它允许您 定义状态 ,并将应用程序 转换 为这些状态。真正的好处是,它可以 使嵌套状态解耦 ,并以优雅的方式进行一些非常复杂的布局。
正是我们需要的一点-解耦子状态… 实际上实际上 是 动态更改控制器 …可以通过更改URL或仅通过状态更改 (一个同级子而不是其他不进行URL更改)
您需要对路由进行一些不同的思考,但是一旦您掌握了基于状态的方法,我想您会喜欢的…
最后,链接很少,我将其标记为ui-router的圣杯
示例应用程序。实际上,我们可以看到ui路由器状态机的工作方式。我们可以加载 列表 作为 家长状态 ,那么我们可以选择行项目,这的确代表了自己的 孩子的状态 ......而家长没有重装 ( 这里我试图解释它的更多细节)
state.js -示例应用程序的基本代码。这是我见过的记录最好的代码片段之一……花了一些时间来完成,这将为您提供80%的答案:ui-Router工作原理
state.js
ui-Router
根据我的经验,这确实适用于小型应用程序以及大型系统……喜欢它……