我遇到过这些问题的多种形式,但没有一种对我的情况有足够的影响。我有一个基本的AngularJS应用程序,其中相关html的部分是:
<nav class="navbar" ng-controller="NavController as nav">
<ul class="nav" ng-bind-html="pages"></ul>
</nav>
控制器定义为:
app.controller('NavController', ['$scope', '$sce', '$route', '$location', function($scope, $sce, $route, $location) {
pages = {
'home' : '#/',
'resume/cv' : '#/resume',
'publications' : '#/publications',
'contact' : '#/contact'
};
$scope.getClass = function(page) {
// if ($route.current.activetab == page)
// return 'active' ;
console.log(('/' + page) === $location.path());
if (('/' + page) === $location.path())
// return 'active';
return true;
else
return false;
};
$scope.listPages = function() {
ret = '' ;
for (key in pages) {
// ret += '<li><a href="' + pages[key] + '" ng-class="' + $scope.getClass(key) + '">' + key + '</a></li>' ;
ret += '<li><a href="' + pages[key] + '" ng-class="{active:' + $scope.getClass(key) + '}">' + key + '</a></li>' ;
// ret += '<li><a href="' + pages[key] + '" ng-class="{active: $route.current.activetab == ' + key + '">' + key + '</a></li>' ;
}
return ret
};
$scope.pages = $sce.trustAsHtml($scope.listPages()) ;
}]);
根据评论的内容,您可以看到我尝试了几种ret
变量。我可以使用class=" + $scope.getClass(page)
获得一个活跃的课程,但是当我点击其他链接时,这不会更新。我使用ng-class
,但似乎没有把课程安排到位。
如有必要,我可以提供额外的代码或输出。
答案 0 :(得分:1)
您不应该使用ngBindHtml
只使用ngRepeat
来呈现列表:
<nav class="navbar" ng-controller="NavController as nav">
<ul class="nav">
<li ng-repeat="(key, value) in pages">
<a ng-href="{{value}}" ng-class="{active: getClass(key)}">{{key}}</a>
</li>
</ul>
</nav>
pages
是范围属性:
$scope.pages = {
'home' : '#/',
'resume/cv' : '#/resume',
'publications' : '#/publications',
'contact' : '#/contact'
};