如果我有一个像这样的数组和json。我省略了一堆不需要解释的内容。
$scope.socialTypes = ["facebook", "pintrest", "twitter", "linkedin"];
$scope.socialJson = [{"type": "facebook"}, {"type": "twitter"}]
我有像这样的HTML
<span class="btn btn-lg btn-squared" ng-repeat="(socialTypeKey, socialTypeValue) in socialTypes">
<span ng-repeat="socialData in socialJson">
<a ng-if="socialData.type == socialTypeKey && socialData.golden && socialData.active" class="{{socialTypeValue.aclass}}"><i class="{{socialTypeValue.iclass}}"></i></a>
<i ng-if="socialData.type == socialTypeKey && socialData.golden && !socialData.active" class="{{socialTypeValue.iclass}}"></i>
<i ng-hide="!inArray(socialTypeKey, socialJson)" class="{{socialTypeValue.iclass}}"></i>
</span>
</span>
忽略这里的黄金,活跃和类。我想知道的是,只要社交类型不在socialJson变量中,我就需要显示第3个元素。所以基本上前两个ng-ifs会显示社交是否同时存在,而第三个将显示,如果它不在数组中,就像我嘲笑
答案 0 :(得分:1)
应该能够在范围中添加isInside函数。用我喜欢的任何实现替换我对underscoreJS的使用。
JS:
$scope.socialTypes = ["facebook", "pintrest", "twitter", "linkedin"];
$scope.socialJson = [{"type": "facebook"}, {"type": "twitter"}]
$scope.isInside = function(array, item) {
return _.contains(array, item);
}
HTML:
<span class="btn btn-lg btn-squared" ng-repeat="(socialTypeKey, socialTypeValue) in socialTypes">
<span ng-repeat="socialData in socialJson">
<a ng-if="socialData.type == socialTypeKey && socialData.golden && socialData.active" class="{{socialTypeValue.aclass}}"><i class="{{socialTypeValue.iclass}}"></i></a>
<i ng-if="socialData.type == socialTypeKey && socialData.golden && !socialData.active" class="{{socialTypeValue.iclass}}"></i>
<i ng-hide="!isInside(socialJson, socialTypeKey)" class="{{socialTypeValue.iclass}}"></i>
</span>
</span>