当 debugInfoEnabled 为 false 时替代 $element.isolateScope()?
Alternative to $element.isolateScope() when debugInfoEnabled is false?
使用 Angular 1.3.15、UI Bootstrap 0.12.1 和 UI 路由器 0.2.13。
鉴于此标记:
<tabset type="tabs">
<tab ui-sref="home.state1" ui-tabbed-state heading="tab1"></tab>
<tab ui-sref="home.state2" ui-tabbed-state heading="tab2"></tab>
<tab ui-sref="home.state3" ui-tabbed-state heading="tab3"></tab>
<tab ui-sref="home.state4" ui-tabbed-state heading="tab4"></tab>
</tabset>
<ui-view />
和我的自定义 ui-tabbed-state
指令:
function uiTabbedStateDirective()
{
return {
restrict: 'A',
require: '^tab',
controller: [ '$element', '$state', function($element, $state) {
var tabset = $element.controller('tabset');
var tab = $element.isolateScope(); // or $element.children().scope();
var sref = $element.attr('ui-sref');
if (tabset && tab && sref && sref === $state.current.name)
tabset.select(tab);
}]
};
}
在应用程序来回导航、刷新等操作时,我能够select根据当前 state/URL 选择正确的选项卡
问题是,$element.isolateScope()
(和 $element.scope()
就此而言)只能在启用调试数据的情况下使用。禁用调试数据时是否有任何等效功能或一些解决方法?
那好吧,回答我自己的愚蠢问题。
简答:RTFM。
长答案:UI 路由器已经有一个 ui-sref-active
指令可以做到这一点。我的天啊
<tabset type="tabs">
<tab ui-sref="home.state1" ui-sref-active="active" heading="tab1"></tab>
<tab ui-sref="home.state2" ui-sref-active="active" heading="tab2"></tab>
<tab ui-sref="home.state3" ui-sref-active="active" heading="tab3"></tab>
<tab ui-sref="home.state4" ui-sref-active="active" heading="tab4"></tab>
</tabset>
使用 Angular 1.3.15、UI Bootstrap 0.12.1 和 UI 路由器 0.2.13。
鉴于此标记:
<tabset type="tabs">
<tab ui-sref="home.state1" ui-tabbed-state heading="tab1"></tab>
<tab ui-sref="home.state2" ui-tabbed-state heading="tab2"></tab>
<tab ui-sref="home.state3" ui-tabbed-state heading="tab3"></tab>
<tab ui-sref="home.state4" ui-tabbed-state heading="tab4"></tab>
</tabset>
<ui-view />
和我的自定义 ui-tabbed-state
指令:
function uiTabbedStateDirective()
{
return {
restrict: 'A',
require: '^tab',
controller: [ '$element', '$state', function($element, $state) {
var tabset = $element.controller('tabset');
var tab = $element.isolateScope(); // or $element.children().scope();
var sref = $element.attr('ui-sref');
if (tabset && tab && sref && sref === $state.current.name)
tabset.select(tab);
}]
};
}
在应用程序来回导航、刷新等操作时,我能够select根据当前 state/URL 选择正确的选项卡
问题是,$element.isolateScope()
(和 $element.scope()
就此而言)只能在启用调试数据的情况下使用。禁用调试数据时是否有任何等效功能或一些解决方法?
那好吧,回答我自己的愚蠢问题。
简答:RTFM。
长答案:UI 路由器已经有一个 ui-sref-active
指令可以做到这一点。我的天啊
<tabset type="tabs">
<tab ui-sref="home.state1" ui-sref-active="active" heading="tab1"></tab>
<tab ui-sref="home.state2" ui-sref-active="active" heading="tab2"></tab>
<tab ui-sref="home.state3" ui-sref-active="active" heading="tab3"></tab>
<tab ui-sref="home.state4" ui-sref-active="active" heading="tab4"></tab>
</tabset>