当 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>