I use Bootstrap tabs in my project. After clicking on the tab, I would like to change the URL as follows:
/home/first /home/second
But I do not know how to fix it. Here is my $routeProvider code:
$routeProvider .when('/:appId/home', { templateUrl: 'app/home/home.html', controller: 'homeController' }) .when('/:appId/home/first', { templateUrl: 'app/home/first/first.html', controller: 'firstController' })
UPD Directive Code:
'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 homepage:
<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: '/' }); })