当ng-switch不工作时,Angular JS isNumber

时间:2016-12-24 01:06:53

标签: javascript html angularjs

我是Angular的新手。我试图根据某些条件切换div

  <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)}}无效。有人能告诉我这里有什么问题吗?

1 个答案:

答案 0 :(得分: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>

expression中的ng-switch可以是范围函数调用,范围变量,也可以是值。但在ng-switch-when="something"中,此处something应为值。即使我们提到范围变量或函数调用,它也不起作用。你提到的是,它将它作为一个值,然后比较ng-switch中的值然后呈现匹配。但是在您的代码中,您在isNumber()中调用了一个函数ng-switch-when。所以,它不匹配。即使在第二种情况下,它应该是url的值,而不是变量。但是,如果您想使用函数来呈现DOM,请转到ng-if而不是ng-switch。 ng - if="funcA()"将起作用,但在每个摘要周期执行(监视)以了解该值。但调用ng-if内的函数也不是一个好的解决方案。有关详细信息http://autoform.meteorapp.com/quickform