Angular 1.6-防止ng-repeat如果不是对象?

时间:2018-08-22 12:23:18

标签: angularjs angularjs-ng-repeat

在我的代码中,我从服务器接收了一些信息,并将其提供给用户。事实是,信息可以是字符串或对象。如果数据是字符串,它仍然会显示,但是angular会尝试在该字符串上进行迭代,如果有“重复的键”,则会引发错误。如果有问题的变量是纯字符串,是否可以防止angular运行ng-repeat在以下示例中,$ctrl.details可以是对象或字符串。如果它是一个字符串,我只想在其中显示它,而无需启动ng-repeat循环。 HTML:

        <div ng-repeat="details in $ctrl.details">
            <strong>{{:: details.title}}</strong>
            <ul>
                <li ng-repeat="value in details.detailsRows">
                    <strong>{{:: value.title}}</strong>
                    <a ng-href="{{:: value.value }}" ng-if="value.isLink" target="_blank">{{:: value.value }}</a>
                    <img ng-src="{{:: value.value }}" ng-if="value.isImage" />
                </li>
            </ul>
        </div>

1 个答案:

答案 0 :(得分:1)

比用标记,更喜欢用Javascript解决问题:

...
if (angular.isString(vm.details)) {
  vm.strDetails = vm.details;
  vm.details = [];
} else {
  vm.strDetails = '';
}

{{$ctrl.strDetails}}
<div ng-repeat="details in $ctrl.details">