2016-12-24 104 views
2

我是Angular的新手。我試圖做切換基於某些條件divAngular JS is ng on ng-switch-when not working

<td> 
    <div layout="row" layout-align="start center"> 
     <img ng-if="row.pin" ng-src="{{pinImageUrl}}" alt="Pinned @ {{row.pin}}" class="img-pin" /> 
     <div ng-switch="checkUrl"> 
     <a ng-switch-when="{{isNumber(row.id)}}" href="numberUrl "> 
      {{getName(row)}} 
     </a> 
     <a ng-switch-when="url" href="{{url + row.id}}"> 
      {{getName(row)}} 
     </a> 
     <span ng-switch-default href="aaaaaa"> 
      {{getName(row)}} 
     </span> 
     </div> 
    </div> 
    </td> 

{{isNumber(row.id)}}不工作。有人能告訴我這裏有什麼問題嗎?

+2

嘗試angular.isNumber ....... https://docs.angularjs.org/api/ng/function/angular.isNumber –

+1

也代替href很高興使用ng-href ....... https://docs.angularjs.org/api/ng/directive/ngHref –

+0

checkUrl值是什麼? –

回答

0
<div ng-switch="checkUrl"> 
    <a ng-switch-when="{{isNumber(row.id)}}" href="numberUrl "> 
     {{getName(row)}} 
    </a> 
    <a ng-switch-when="url" href="{{url + row.id}}"> 
     {{getName(row)}} 
    </a> 
    <span ng-switch-default href="aaaaaa"> 
     {{getName(row)}} 
    </span> 
    </div> 

ng-switchexpression的可以是一個範圍的函數調用,變量範圍或可以是一個值。但在ng-switch-when="something"中,這裏something應該是一個值。即使我們提到範圍變量或函數調用,它也不起作用。你提到的,它將其作爲一個值,然後比較ng-switch中的值,然後呈現匹配項。但是在您的代碼中,您正在撥打的函數ng-switch-when。所以,它不匹配。即使在第二種情況下,它也應該是url的值,而不是可變的。但是,如果您想使用函數來渲染DOM,請使用ng-if而不是ng-switch。 ng-if="funcA()"將工作,但在每個摘要週期執行(監視)以瞭解該值。但是調用ng-if中的函數也不是一個好的解決方案。欲瞭解更多信息ng-if being called more times than it should

+0

當checkUrl == url但它的id是數字時它將如何工作? – user3407267