我有一个导航栏指令,它应该根据路由产生链接(例如,管理面板不同)。
当我手动编写地址时,一切正常,但是当我使用时:
<a href="admin">Link</a></footer>
链接它重定向到页面,而不是在导航栏中加载新链接(它们保持与旧页面相同)。
directive('navBar', [
function() {
return {
controller: function($scope, pagesFactory, $location) {
var path = $location.path().substr(0, 6);
if ($location.path() == "/admin/login")
return;
else if (path == "/admin") {
$scope.navLinks = [{
title: 'Pages',
url: 'admin/pages'
}, {
title: 'Site Settings',
url: 'admin/site-settings'
}, ];
} else {
pagesFactory.getPages().then(
function(response) {
$scope.navLinks = response.data;
}, function() {
});
}
},
templateUrl: 'partials/directives/nav.html'
};
}
])
路径更改后有没有办法运行控制器?
EDIT @ 1:
当我尝试使用$ location.path(&#39; / admin / pages&#39;)时,同样的事情发生了;即使我也使用$ scope.apply()。
基本上,当路径更改不是手动时,它不会重新加载指令。
使用以下方式修复:
$scope.$on("$routeChangeSuccess", function() ...