Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS开关表达式求值,但不会触发正确的结果_Javascript_Angularjs_Switch Statement_Conditional Statements_Ng Switch - Fatal编程技术网

Javascript AngularJS开关表达式求值,但不会触发正确的结果

Javascript AngularJS开关表达式求值,但不会触发正确的结果,javascript,angularjs,switch-statement,conditional-statements,ng-switch,Javascript,Angularjs,Switch Statement,Conditional Statements,Ng Switch,我试图使用一个开关来控制一些图像url参数。Myimage.marketplace节点是一个image.url.indexOf(“?”),如果url中存在问号,则其计算结果为-1或正整数。我可以让我的表达式(ng-switch-on=“{image.marketplace===-1}”)正确计算,但它不会触发正确的“when”条件。想知道为什么吗 <span ng-switch on="{image.marketplace == -1}"> <img ng-switch-w

我试图使用一个开关来控制一些图像url参数。My
image.marketplace
节点是一个
image.url.indexOf(“?”)
,如果url中存在问号,则其计算结果为
-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>

如文档所示,该指令不需要花括号。制作这样的东西可能是个更好的主意:

<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>

此外,它还将帮助您对该函数进行单元测试。

酷!我来测试一下。谢谢有些事情仍然不对劲…默认情况仍然被触发。我刚才看到了,但真的很奇怪,你有一个“真”的情况,一个“假”的情况和一个默认情况。他们并不是相互排斥的,我认为安格拉斯并不真正欣赏他们。删除“false”大小写并用默认大小写替换。从NgSwitchOn页面>>上的文档中,请注意要匹配的属性值不能是表达式。它们被解释为要匹配的文本字符串值。例如,ng switch when=“someVal”将与字符串“someVal”匹配,而不是与表达式$scope.someVal的值匹配。
$scope.isMarketplaced = function (image)
{
    return image.marketplace == -1;
}