如果是数组重复,则显示字符串

时间:2016-10-13 16:04:15

标签: angularjs

我在控制器中引用了一个可能是字符串或数组的值。如果它是一个数组,我想使用" ng-repeat" (可能)列出我的物品。

如果它是一个字符串,我只想显示字符串。

类似的东西:

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

我想知道在Angularjs中是否有一种优雅的方式可以做到这一点,我还不熟悉。

由于

3 个答案:

答案 0 :(得分:1)

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

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>

答案 1 :(得分:1)

angular.isArray方法。你可以用它。您需要将它放在范围或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>

如果您在多个地方使用它,最好是去指令。

答案 2 :(得分:1)

制作一个简单的吸气剂

$scope.getVal = function( vals ){
    if(Array.isArray(vals)) return vals
    else return [ vals ]
}

然后代替ng-if AND ng-repeat只需像往常一样使用转发器。

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