Angularjs 角度UI路由器嵌套选项卡,切换并切换回我们离开的位置
请看Angularjs 角度UI路由器嵌套选项卡,切换并切换回我们离开的位置,angularjs,angular-ui-router,Angularjs,Angular Ui Router,请看 单击“左” 单击“链接2”将其展开 单击“右键” 单击“左”-链接2不再展开 问:当我们从左边的标签上移开,然后返回到左边的标签上时,左边的标签怎么能“记住”它显示的是“链接2”?(当然,我也希望为正确的选项卡执行此操作) 请注意,我不想以任何方式破解官方Angular(UI路由器等)代码 另外,我希望在第一次显示或选择左侧时,默认情况下会扩展链接1(右侧有类似的默认设置)。但这可能是另一个问题的主题?你可以很容易地做到这一点 在同一级别为每个选项卡设置单独的状态 1) 在$rootSco
另外,我希望在第一次显示或选择左侧时,默认情况下会扩展链接1(右侧有类似的默认设置)。但这可能是另一个问题的主题?你可以很容易地做到这一点 在同一级别为每个选项卡设置单独的状态 1) 在
$rootScope
上注册$stateChangeSuccessuccess侦听器。如果目标状态包括(“左”)
或包括(“右”)
,则跟踪目标状态及其状态参数
2) 在$rootScope
上注册$stateChangeStart侦听器。如果to状态为(“左”)
或为(“右”)
,则阻止直接转换到选项卡状态,然后使用$state。转到先前为该选项卡保存的状态/参数
看看我的ui路由器分支,它实现了这一点。我称之为“深度状态重定向”。
我创建了一个plunk,并将范围侦听器和注册表从我的fork集成到plunk中的根范围。看一看:您可能想查看和。为什么不将扩展状态存储在一个更为父级的控制器中?因为我不知道如何。我是n00b:-(+1(还不是答案).我喜欢它!你显然做了很多工作。Plunk正好显示了我想要发生的事情,但我担心UI Routr fork。没有办法用标准的、非分叉的Angular实现它吗?你不需要fork。你只需要一个地方来放置注册表和侦听器。我用概念实现在我的答案中添加了Plunk在根状态的控制器上加载。对延迟回复表示歉意。出现了一些问题。据我所知,我确实喜欢你的Plunk。但是,当我尝试将它应用到我已经存在的应用程序时,通过放置$scope.deepStateRedirect.register('top'),每个选项卡都有另外两个选项卡(嵌套的控制器));
我得到'TypeError:Cannot read property'register'of undefinedI不能肯定,除非看到你是如何构造你的应用程序的,但是错误消息表明deepStateRedirect服务对象不在你正在使用的$scope上。你正在访问的$scope是否是你在控件中放置deepStateRedirect的子作用域如果要将deepStateRedirect添加到$scope,您可以将其添加到$rootScope,以避免父子混淆。