Я хочу изменить свой шаблон панели навигации при изменении маршрута.
Я придумал два решения, но ни одним из них я не доволен на 100%.
1) Я могу определить ng-include за пределами моего представления.
angular.module('automatclubApp')
.directive('navbar', function (PartialsPath) {
return {
restrict: 'E',
controller: 'NavbarCtrl',
controllerAs: 'navCtrl'
};
})
.controller('NavbarCtrl', function(PartialsPath, $scope, $location) {
$scope.$on('$locationChangeSuccess', function(/* EDIT: remove params for jshint */) {
var path = $location.path();
//EDIT: cope with other path
$scope.templateUrl = (path==='/') ? '../scripts/directives/partials/navbar.html' : '../scripts/directives/partials/navbar_lobby.html';
});
});
А затем включите это в мой индекс:
<body>
<div ng-controller='NavbarCtrl'>
<div ng-include='templateUrl'></div>
</div>
<div ng-view=""></div>
</body>
2) В моем файле views/main.html я могу включить ng-include следующим образом:
<ng-include src="'../scripts/directives/partials/navbar.html'"></ng-include>
В идеале я хотел бы иметь объявление директивы в моем ng-представлении для более чистого кода. Какие-либо предложения? Он говорит, что мой контроллер навигационной панели не определен, когда я могу это сделать в ng-view, поэтому кажется, что первое решение не работает так, как я предполагал.
template: function (...){...}
? - person Makarov Sergey   schedule 13.09.2016