0

angularjs ng-switch に問題があります

JS

function TestCtrl($scope) {
    $scope.currentUser = {"userId":"1","userRole":"N"};
    $scope.userRoles = {"normal":"N","admin":"A"}
    $scope.patient = {name: 'John'};
}

HTML

    <div ng-switch on="currentUser.userRole">
      <a ng-switch-when="userRoles.normal" href="normalUrl"> 
          {{patient.name}} 
      </a>
      <a ng-switch-when="userRoles.admin" href="adminUrl"> 
          {{patient.name}} 
      </a>
      <div ng-switch-default> default </div>
    </div> 

</div>

normalUrl へのリンクで患者の名前が表示されることを期待していますが、「デフォルト」が表示されます。私は何を間違っていますか?

ここにコードのフィドルがあります

4

1 に答える 1

1

ngSwitchWhenディレクティブは式を評価しません (ただし、これは 1.3 に追加される可能性があると聞きました)。値は文字列リテラルとして補間されるため、次のように使用する必要があります。

<a ng-switch-when="N" href="normalUrl">

それは機能しますが、 when の値を動的に決定する必要がある場合はngIf、ニーズにより適している可能性があります。

<a ng-if="currentUser.userRole === userRoles.normal" href="normalUrl">

<a ng-if="currentUser.userRole === userRoles.admin" href="adminUrl">
于 2014-04-08T17:24:26.387 に答える