我在控制器中引用了一个可能是字符串或数组的值。如果它是一个数组,我想使用" ng-repeat" (可能)列出我的物品。
如果它是一个字符串,我只想显示字符串。
类似的东西:
<div>
{{if is array}}
<span ng-repeat="v in myvalue">{{v}}</span>
{{else}}
{{myvalue}}
{{endif}}
</div>
我想知道在Angularjs中是否有一种优雅的方式可以做到这一点,我还不熟悉。
由于
答案 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>