AngularJS开关表达式计算但不会触发正确的结果

时间:2013-05-24 22:11:38

标签: javascript angularjs switch-statement conditional-statements ng-switch

我正在尝试使用开关来控制一些图像url参数。我的image.marketplace节点是image.url.indexOf('?'),如果网址中存在问号,则评估为-1或正整数。我可以让我的表达式(ng-switch on="{image.marketplace == -1}")正确评估,但它不会触发正确的“when”条件。有关为什么的任何想法?

<span ng-switch on="{image.marketplace == -1}">
  <img ng-switch-when="true"  ng-src="{{image.value}}?wid=100&hei=100">
  <img ng-switch-when="false" ng-src="{{image.value}}&wid=100&hei=100">
  <img ng-switch-default      ng-src="{{image.value}}">
</span>

1 个答案:

答案 0 :(得分:3)

ngSwitchOn指令不需要大括号,如文档所示。做出类似的事情可能是个更好的主意:

<span ng-switch on="isMarketplaced(image)">
  <img ng-switch-when="true"  ng-src="{{image.value}}?wid=100&hei=100">
  <img ng-switch-when="false" ng-src="{{image.value}}&wid=100&hei=100">
  <img ng-switch-default      ng-src="{{image.value}}">
</span>

在控制器中:

$scope.isMarketplaced = function (image)
{
    return image.marketplace == -1;
}

此外,它还可以帮助您对此功能进行单元测试。