Имейте в виду, что значения атрибутов для сопоставления не могут быть выражения. Они интерпретируются как буквальные строковые значения, соответствующие . Например, ng-switch-when = "someVal" будет соответствовать строке "someVal", а не по отношению к значению выражения $ scope.someVal.
Так, по документации взять следующий пример, чтобы решить случай:
<div ng-switch="hasUrl">
<span ng-switch-when="row.id.indexOf(':') < 0"> WONT SHOW </span> <!-- WILL NOT WORK EVER -->
<span ng-switch-when="makeItWork"> ALSO, WONT SHOW</span>
<span ng-switch-when="true">WILL NOT SHOW EITHER</span>
<span ng-switch-when="1">WILL SHOW</span>
</div>
Look carefullyat области видимости переменных и их значения:
$scope.hasUrl = 1; /* NOTICE != true BUT 1*/
$scope.row = {};
$scope.row.id = "true:";
$scope.makeItWork = $scope.row.id.indexOf(':') > 0 ? 1 : 0;
console.log($scope.makeItWork); /* SEE THAT TRUE WILL BE LOGGED BUT IT STILL WONT SHOW */
Так что даже если ng-switch
оценит выражение, похоже ng-switch-when
не будет. Если бы я был вами, я бы просто придерживался ng-if
.
FIDDLE Fixed скрипка
так что проблема после того, как два ansers на ваш вопрос? Можете ли вы предоставить обратную связь? – FRECIA