2017-01-05 9 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

ので、問題は、あなたの質問に2 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"は 文字列 "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> 

は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固定フィドル

関連する問題