【问题标题】:Angular JS isNumber on ng-switch-when not workingAngular JS isNumber on ng-switch-when not working
【发布时间】:2017-05-09 15:10:33
【问题描述】:

我是 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)}} 不起作用。谁能告诉我这里出了什么问题?

【问题讨论】:

标签: javascript html angularjs


【解决方案1】:
  <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-switch 中的expression 可以是作用域函数调用、作用域变量或值。但是在ng-switch-when="something" 中,这里的something 应该是一个值。即使我们提到范围变量或函数调用,它也不起作用。您提到的,它将它作为一个值,然后比较 ng-switch 中的值,然后在匹配时呈现。但是在您的代码中,您在ng-switch-when 中调用了一个函数isNumber()。所以,不匹配。即使在第二种情况下,它也应该是url 的值,而不是变量。但是如果你想使用函数来渲染 DOM,请使用 ng-if 而不是 ng-switch。 ng-if="funcA()" 可以工作,但会在每个摘要周期执行(监视)以了解值。但是在ng-if 内部调用函数也不是一个好的解决方案。欲了解更多信息ng-if being called more times than it should

【讨论】:

  • checkUrl == url 但 id 为 number 时如何工作?
猜你喜欢
  • 2017-03-03
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 2022-12-19
  • 1970-01-01
相关资源
最近更新 更多