2013-06-29 12 views
7

角度ui-bootstrapライブラリを使用していますが、タブごとにカスタムhrefを指定する方法がわかりません。角度UI-ブートストラップドキュメントで角度ui-bootstrapタブディレクティブにhrefパラメータを指定する方法

<tab ng-repeat="tab in tabs" active="tab.active" heading={{tab.name}}></tab> 

、オプションのパラメータ選択()が指定されますが、私はどのようにこれは、各タブ

ためのリンク言い換えるする別の方法をカスタマイズされた使用には考えているました問題は角度ui-bootstrapタブでルーティングを使用する方法です

答えて

9

私はそれが遅すぎるのではないことを願っていますが、今日同じ問題が発生しました。コントローラでタブのhrefを定義

1):次の方法でそれを達成することができます

$scope.tabs = [ 
    { title:"tab1", href:"#/route1/page1" }, 
    { title:"tab2", href:"#/route1/page2" } 
]; 

2)コントローラにハッシュを変更する機能を宣言:

$scope.changeHash = function(data) { 
    window.location.hash = data; 
}; 

3)以下を使用しますマークアップ:

<tabset> 
    <tab ng-repeat="tab in tabs" heading="{{tab.title}}" 
     active="tab.active" select="changeHash(tab.href)" /> 
    </tabset> 

これが最善のアプローチであるかどうかはわかりませんその他。

+0

ありがとうございました。私のために働いてください – gbozee

+0

レイアウトはうまくいきましたが、 'select'と' changeHash'メソッドを使ってルーティングを実装するとすぐにJSが無限ループに入り、 'Uncaught Error :[$ rootScope:infdig] 10 $ digest()反復がエラーに達しました。無限にタブを切り替えるように見えて失敗しただけです。 – atconway

+0

これは私のために働いていましたが、ページをリフレッシュするとエラーが表示されました。「Error:[$ rootScope:infdig]」と表示されました。これを解決する方法がわからない.. :( – kaluva

3

angle-ui-routerを使用する場合は、ui-sref属性を追加するだけです。例: $ rootScopeを避けるために

<tabset> 
    <tab ng-repeat="tab in tabs" heading="{{tab.title}}" 
    active="tab.active" ui-sref="stateName({param:somevalue,param2:tab.somekey})" /></tabset> 
0

:infdigエラーが、私は指示に従ったとする機能を変更:

$scope.changeHash = function(data) { 
    $location.path(data); 
}; 

しかし、コントローラで$ロケーションサービスを注入することを忘れないでください。

関連する問題