2017-01-05 8 views
-1

스위치 기반 div가 있지만 스위치에 부울 변수가 있지만 값은 row.id를 기준으로 평가됩니다. 어떤 사람이 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?각도 js : ng-switch-when에 대해 동적 표현이 작동하지 않습니다.

<div ng-switch="hasUrl"> 
    <a ng-switch-when="row.id.indexOf(':') < 0 === true" href="{{url + row.id}}"> <!-- hasUrl = true --> 
    {{getName(row)}} 
    </a> 
    <a ng-switch-default href="......."> 
     {{getName(row)}} 
    </a> 
    </div> 
+0

그래서 당신의 질문에이 ansers을 가진 후 문제가 무엇인가? 피드백을 제공해 주시겠습니까? – FRECIA

답변

0

===이 필요하지 않으므로 제거하십시오.

<div ng-switch="hasUrl"> 
    <a ng-switch-when="row.id.indexOf(':') < 0" href="{{url + row.id}}"> <!-- hasUrl = true --> 
     {{getName(row)}} 
    </a> 
    <a ng-switch-default href="......."> 
     {{getName(row)}} 
    </a> 

0

는 속성 값이 표현 될 수 없습니다에 대해 일치주의하십시오. 이 문자는 과 일치하는 리터럴 문자열 값으로 해석됩니다. 예를 들어 ng-switch-when = "someVal"은 $ scope.someVal의 값과 반대가 아닌 문자열 "someVal"과 일치합니다. ,

$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가 식을 평가합니다 : 범위 변수와 그 값 carefullyat

<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> 

봐 :

그래서 따라 문서에 은 당신의 사건을 해결하기 위해 예를 다음 걸릴 ng-switch-when 실례합니다. 내가 너라면 나는 대신 ng-if에 충실하겠다.

FIDDLE 고정 바이올린