Angularjs 重复if数组,显示if字符串

Angularjs 重复if数组,显示if字符串,angularjs,Angularjs,我在控制器中引用的值可能是字符串或数组。如果它是一个数组,我想使用“ng repeat”(可能)来列出我的项目 如果是字符串,我只想显示字符串 比如: <div> {{if is array}} <span ng-repeat="v in myvalue">{{v}}</span> {{else}} {{myvalue}} {{endif}} </div> {{if is array}}

我在控制器中引用的值可能是字符串或数组。如果它是一个数组,我想使用“ng repeat”(可能)来列出我的项目

如果是字符串,我只想显示字符串

比如:

<div>
    {{if is array}}
        <span ng-repeat="v in myvalue">{{v}}</span>
    {{else}}
        {{myvalue}}
    {{endif}}
</div>

{{if is array}}
{{v}
{{else}
{{myvalue}}
{{endif}}
我想知道在Angularjs中是否有一种优雅的方式可以做到这一点,但我还不熟悉


谢谢

在控制器上执行逻辑(为数组和字符串分配不同的变量)-然后在视图中执行哑逻辑:

if (Array.isArray($scope.myvalue)) {
    $scope.myArray = $scope.myvalue;
} else {
    $scope.myString = $scope.myvalue;
}
那景色呢

<div>
    <div ng-if="myArray">
        <span ng-repeat="v in myArray">{{v}}</span>
    </div>
    <div ng-if="myString">
        {{myString}}
    </div>
</div>

{{v}
{{myString}}

在控制器上执行逻辑(为数组和字符串分配不同的变量)-然后在视图中执行哑逻辑:

if (Array.isArray($scope.myvalue)) {
    $scope.myArray = $scope.myvalue;
} else {
    $scope.myString = $scope.myvalue;
}
那景色呢

<div>
    <div ng-if="myArray">
        <span ng-repeat="v in myArray">{{v}}</span>
    </div>
    <div ng-if="myString">
        {{myString}}
    </div>
</div>

{{v}
{{myString}}
有一种方法。你可以用这个。您需要将其放置在范围或vm中:

$scope.isArray = angular.isArray
和HTML格式

 <span ng-repeat="v in myvalue" ng-if="isArray(myvalue)">{{v}}</span>
 <span ng-if="!isArray(myvalue)">{{myvalue}}</span>
{{v}
{{myvalue}}
如果您在多个地方使用它,最好是使用一个指令。

有一种方法。你可以用这个。您需要将其放置在范围或vm中:

$scope.isArray = angular.isArray
和HTML格式

 <span ng-repeat="v in myvalue" ng-if="isArray(myvalue)">{{v}}</span>
 <span ng-if="!isArray(myvalue)">{{myvalue}}</span>
{{v}
{{myvalue}}
如果您在多个地方使用它,最好是使用一个指令。

制作一个简单的getter

$scope.getVal = function( vals ){
    if(Array.isArray(vals)) return vals
    else return [ vals ]
}
如果ng repeat,则只需像平常一样使用中继器,而不是ng

<div ng-repeat="val in getVal(vals)"> {{ val }} </div>
{{val}
做一个简单的getter

$scope.getVal = function( vals ){
    if(Array.isArray(vals)) return vals
    else return [ vals ]
}
如果ng repeat,则只需像平常一样使用中继器,而不是ng

<div ng-repeat="val in getVal(vals)"> {{ val }} </div>
{{val}


插值中的
if
有什么用?这是如何产生预期输出的?@charlietfl Angular可以插值条件。@jusopi很好,但不会以这种方式产生预期结果。。。在editagreed同意后,现在是这样了,加上他修改了他的答案,所以现在这是一个没有意义的点。所有伟大的答案我都同意,但这对我来说是最好的解决方案。插值中的
if
有什么用?这是如何产生预期输出的?@charlietfl Angular可以插值条件。@jusopi很好,但不会以这种方式产生预期结果。。。在Editz同意后,现在是这样了,加上他修改了他的答案,所以现在这是一个没有意义的问题。所有伟大的答案在我看来都是最好的解决方案,但这对我的具体情况来说是一个细微的差别,在我的具体情况下,这是行不通的,但我可以看到其他人会怎样。UPVOTE你能解释一下细节吗?我实际上是在用另一个元素包装数组元素,这个元素不会与字符串值一起出现,因为还有其他用户与数组创建的元素交互。啊,好的,我明白了。在这种情况下,我会通过过滤器驱动它,并使用ng if。我真的不喜欢在控制器中添加这种逻辑。在我的特定情况下,这种逻辑是不起作用的,但我可以看出在其他情况下是如何起作用的。UPVOTE你能解释一下细节吗?我实际上是在用另一个元素包装数组元素,这个元素不会与字符串值一起出现,因为还有其他用户与数组创建的元素交互。啊,好的,我明白了。在这种情况下,我会通过过滤器驱动它,并使用ng if。我真的不喜欢在控制器中添加这种逻辑。