0

我正在使用 AngularJS 1.05

我想要这样的东西:

在我的控制器中:

$scope.location = $location.path().split('/')[2]
$scope.lang = $routeParams.lang
$scope.bodyClassName = ((if $scope.location isnt "login" then "sub" else ""))

我想在文档对象中报告这些变量以获取例如:

<div class="home en sub"></div>

我试过了

<div class="{{location}} {{lang}} {{bodyClassName}}"></div>

它在第一次加载时有效,但在视图刷新时无效。

正如文档所说,ng-class用于评估表达式,但我需要打印一个变量。

有什么好方法呢?

4

2 回答 2

4

您需要观察$location.path()以获取路线更改并相应地更新范围变量:

$scope.$watch(function() {
  return $location.path();
}, function(newPath) {
  $scope.location = $location.path().split('/')[2]
  $scope.lang = $routeParams.lang
  $scope.bodyClassName = ((if $scope.location isnt "login" then "sub" else ""))
});

然后,在您的标记中,正如您所尝试的那样:

<div class="{{location}} {{lang}} {{bodyClassName}}"></div>

上述的另一个变体是仅在路由更改成功事件而不是在每个手表中更新范围变量。

于 2013-04-08T09:50:07.373 回答
0

You could do:

<div class="location + ' ' + lang"></div>

or,

<div class="[ location, lang ].join(' ')"></div>
于 2013-04-08T09:45:14.133 回答