私のAngularアプリケーションでは、md-selectedディレクティブがコントローラのプロパティにバインドされているmd-tabsがあります。現在のタブを、テンプレートのng-clickで呼び出される関数によってインデックスが設定されているタブに変更したいと思います。私は私のコントローラでAngular md-tabの変更インデックスはまったく効果がありません
<div ng-controller="TrackingCtrl" layout-fill>
<md-content ng-if="isSmart" layout-fill>
<md-tabs md-selected="selectedIndex" layout-fill>
<md-tab>.........</md-tab>
<md-tab>.........</md-tab>
<md-tab>.........</md-tab>
<md-tab>
<md-tab-label>{{ 'tracking.positions.TITLE' | translate }}</md-tab-label>
<md-tab-body>
<md-tab-content layout-fill flex>
<button ng-click="map.panTo(getPosition());displayMap();"></button>
</md-tab-body>
</md-tab>
</md-tabs>
</md-content>
</div>
:
は、私はそれをこのようにやった
$scope.selectedIndex = 0;
$scope.displayMap = function() {
$scope.selectedIndex = 1;
};
しかし、私はdisplayMap()を呼び出して、私のボタンをクリックしたとき、それは全く効果がありません。
私は問題を調査しました:
- 私は$ scope.selectedIndex = 1を設定すると、私のコントローラでは、デフォルトのタブは、そのインデックス1 OK
- である私は私のテンプレートでMD-選択=「1」を設定すると、デフォルトのタブがインデックス1 OK ものであるものです
- コードにブレークポイントを設定し、ボタンをクリックすると、displayMap()が呼び出され、$ scope.selectedIndex = 1;実行される。 OK
タブが変わらない限り、すべてうまくいくようです。
私は1.0.2
私も更新(効果なし)を強制的に適用されます$使用アンギュラ材質実行している:あなたが最初のタブに移動MD-選択= 0で
$scope.selectedIndex = 0;
$scope.displayMap = function() {
$timeout(function() {
if (!$scope.$$phase) {
$scope.$apply(function() {
$scope.selectedIndex = 1;
});
}
});
};
FYI - それだけで$タイムアウトは、内部的に適用されます$をトリガします。質問に答えない...ちょうど情報を渡す – charlietfl
角度材料github問題トラッカーのチェックを提案する。たくさんのタブに問題があります – charlietfl
はいこれをチェックします – Ben