I'm trying to have sortable panels on each of my tab. If I put panels on index.html it works, but when used inside directive templateUrl: tabs.html it doesn't. Please see the Plunker example here
My html file:
<body>
<div class="container" ng-controller="testCtrl">
<app-tabs></app-tabs>
</div>
<script>
$(document).ready(function () {
$(function () {
$(".sortable").sortable();
});
});
</script>
</body>
My tabs.html file:
<ul class="nav nav-pills">
<li role="presentation" ng-class="{ active:isSet(t.Id) }" ng-repeat=" t in myListOfTabs">
<a href ng-click="setTab(t.Id)">{{t.Name}}</a>
</li>
<li role="presentation" ng-class="{ active:isSet(1) }">
<a href ng-click="setTab(1)">Add Tab</a>
</li>
</ul>
<div ng-repeat=" t in myListOfTabs" ng-show="isSet(t.Id)">
<div class="row sortable">
<div class="panel panel-default">
<div class="panel-body">Panel 1</div>
</div>
<div class="panel panel-default">
<div class="panel-body">Panel 2</div>
</div>
<div class="panel panel-default">
<div class="panel-body">Panel 3</div>
</div>
<div class="panel panel-default">
<div class="panel-body">Panel 4</div>
</div>
<div class="panel panel-default">
<div class="panel-body">Panel 5</div>
</div>
<div class="panel panel-default">
<div class="panel-body">Panel 6</div>
</div>
</div>
</div>
My app.js file:
(function() {
var modelTabs = [{
Id: 2,
Name: "Tab 1",
Layout: 1
}, {
Id: 3,
Name: "Tab 2",
Layout: 1
}, {
Id: 4,
Name: "Tab 3",
Layout: 1
}];
var app = angular.module('appTest', []);
app.controller('testCtrl', ["$scope", function($scope) {
$scope.myListOfTabs = modelTabs;
}]);
app.directive("appTabs", function() {
return {
restrict: "E",
templateUrl: "tabs.html",
controller: function($scope) {
$scope.tab = 2;
$scope.isSet = function(checkTab) {
return $scope.tab === checkTab;
};
$scope.setTab = function(activeTab) {
$scope.tab = activeTab;
};
},
controllerAs: "tab"
};
});
})();