さまざまなタブをスクロールしながらダーティ チェックを実装する必要があります。しかし、この select() および deselect() メソッドを angular ui タブに実装しようとすると、リッスンせず、別のタブへのナビゲーションが停止します。
私は明示的にそれらをアクティブにしていますが、まだうまくいきません。
この問題のデバッグを手伝ってくれますか、それとも回避策を教えてください。
Dashboard.html
<uib-tabset active="active">
<!-- <uib-tab heading="Dashboard" index="0">
<ng-include src="'/project/Dashboard.html'">
</ng-include>
</uib-tab> -->
<uib-tab index="$index" ng-repeat="tab in tabs" heading="{{tab.title}}" active="tab.active"
deselect="switchTabs(tab)" select="selectTab(tab)" disable="tab.disabled">
<uib-tab-heading>
{{tab.title}} <i class="glyphicon glyphicon-remove" ng-click="removeTab($index)" ng-hide="tab.tabId===-1"></i>
</uib-tab-heading>
<ng-include src="tab.templateUrl">
</ng-include>
</uib-tab>
</uib-tabset>
DashboardCtrl.js
$scope.tabs = [];
$scope.activeTab = 0;
$scope.selectTab = function(tabInfo) {
console.log("tab Info"+tabInfo.title);
if($scope.activeTab > 0)
{
$scope.tabs[$scope.activeTab].active=true;
$scope.active = $scope.activeTab;
}
};
$scope.switchTabs = function(tabInfo) {
$scope.prevActiveTab = tabInfo.tabId;
var tabNumbers = $scope.tabs.length;
var tabActivateId = -1;
for(var i=0; i<tabNumbers; i++)
{
if($scope.tabs[i].tabId === tabInfo.tabId)
{
tabActivateId = i;
}
}
if(tabActivateId>=0)
{
$scope.tabs[tabActivateId].active=true;
$scope.active = tabActivateId;
$scope.activeTab = tabActivateId;
}
if($scope.isViewDirty === true)
{
event.preventDefault();
event.stopPropagation();
openConfirmationModal('sm');
}
else
{
$scope.isViewDirty = false;
}
};
これは、イベントをリッスンしていないか、アクティブなタブを正しく選択していません。
Angular JS バージョン 1.4.3 ブートストラップ バージョン 0.14.3