Я использую Bootstrap's Tabs в моем проекте. После того, как вкладка будет нажата, я хотел бы, чтобы изменить URL, например:Угловые бутстрапы Вкладки изменяют URL-адрес после нажатия вкладки
/home/first
/home/second
Но я не знаю, как это исправить. Вот мой $routeProvider
код:
$routeProvider
.when('/:appId/home', {
templateUrl: 'app/home/home.html',
controller: 'homeController'
})
.when('/:appId/home/first', {
templateUrl: 'app/home/first/first.html',
controller: 'firstController'
})
UPD код Директива:
'use strict';
angular.module('bootstrap.tabset', [])
.directive('tabset', function() {
return {
restrict: 'E',
replace: true,
transclude: true,
controller: function($scope) {
$scope.templateUrl = '';
var tabs = $scope.tabs = [];
var controller = this;
this.selectTab = function (tab) {
angular.forEach(tabs, function (tab) {
tab.selected = false;
});
tab.selected = true;
};
this.setTabTemplate = function (templateUrl) {
$scope.templateUrl = templateUrl;
};
this.addTab = function (tab) {
if (tabs.length == 0) {
controller.selectTab(tab);
}
tabs.push(tab);
};
},
template:
'<div class="row-fluid">' +
'<div class="row-fluid">' +
'<div class="nav nav-tabs" ng-transclude></div>' +
'</div>' +
'<div class="row-fluid">' +
'<ng-include src="templateUrl">' +
'</ng-include></div>' +
'</div>'
};
})
.directive('tab', function() {
return {
restrict: 'E',
replace: true,
require: '^tabset',
scope: {
title: '@',
templateUrl: '@'
},
link: function(scope, element, attrs, tabsetController) {
tabsetController.addTab(scope);
scope.select = function() {
tabsetController.selectTab(scope);
}
scope.$watch('selected', function() {
if (scope.selected) {
tabsetController.setTabTemplate(scope.templateUrl);
}
});
},
template:
'<li ng-class="{active: selected}">' +
'<a href="" ng-click="select()">{{ title }}</a>' +
'</li>'
};
});
Главная страница HTML:
<tabset>
<tab title="Tab 1" template-url="/app/home/first/first.html"></tab>
<tab title="Tab 1" template-url="/app/home/home.html"></tab>
</tabset>
app.js
angular.module('frontend', ['ngRoute', 'ui.bootstrap', 'localytics.directives'])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'app/main/main.html',
controller: 'MainCtrl'
})
.when('/:appId/home', {
templateUrl: 'app/home/home.html',
controller: 'homeController'
})
.when('/:appId/home/first', {
templateUrl: 'app/home/first/first.html',
controller: 'firstController'
})
.otherwise({
redirectTo: '/'
});
})
Было бы проще, чтобы помочь решить вашу проблему, если вы могли бы разместить больше кода, предпочтительно рабочий демонстрационный .. – atefth
@atefth Я обновил свой вопрос –
Можете ли вы также опубликовать свой код приложения и контроллера? – atefth