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

あなたがすることができます:

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

また、

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