使用Angular -不要在Ng-Repeat的其他Array's项的基础上显示数组项
With Angular - Don't Display Array Items based on other Array's Items for Ng-Repeat
我认为这与过滤器有关。我有两个数组:1。它包含所有可能被管理的区域(称为区域)和2。它只包含由用户管理的区域(称为adminAreas,它本身在user的数组中)。我有一个网页,显示在两列显示。当用户单击添加它们时,它将它们添加到另一列,并从当前列中删除自身。我想做的是…当页面加载时…不要在areasdiv中重复adminAreasdiv中的条目。这也是来回添加/删除的一种更干净的方式。
JS:
DataService.getAllAreas().then(function (data) {
$scope.areas = data;
});
DataService.getUser($scope.userId).then(function(data){
$scope.user = data;
});
$scope.assignArea = function (area) {
$scope.user.adminAreas.push(area.name);
$scope.areas.splice($scope.areas.indexOf(area), 1);
DataService.updateUser($scope.user).then(function () {
});
};
$scope.removeArea = function (areaName) {
$scope.user.adminAreas.splice($scope.user.adminAreas.indexOf(areaName), 1);
DataService.updateUser($scope.user).then(function () {
});
};
HTML: <div class="sideOneAdd" ng-repeat="currentArea in user.adminAreas>
<a ng-click="assignArea()"><span>{{currentArea}}</span></a>
</div>
<div class="sideTwoRemove" ng-repeat="area in areas (assuming something with filter)>
<a ng-click="removeArea()"><span>{{area.name}}</span></a>
</div>
ng-repeat="area in areas" | filter:filterNotCurrent
$scope.filterNotCurrent = function (area) {
return !$scope.user.adminAreas.some(function (element) {
if (element === area)
return true;
});
};
使用此过滤器:
angular.module('myApp', []);
angular
.module('myApp')
.filter('filterAssignedAreas', filterAssignedAreas);
function filterAssignedAreas(){
return function(areas, assignedAreas){
return areas.filter(function(obj){
return !assignedAreas.some(function(obj2){
return obj2.name == obj.name;
})
})
}
}
然后:
<div class="sideTwoRemove" ng-repeat="area in areas | filterAssignedAreas:user.adminAreas">
相关文章:
- 为什么不't loadash/aunderline将util方法放在数组原型上
- 如何移动到数组的上一个/下一个索引键
- 如何在数组对象上应用每个方法
- D3.js键功能在简单的选择器/数组组合上运行两次
- 在数组子集上完成 ng-repeat 后动态触发事件
- JavaScript foreach 循环在关联数组对象上
- Javascript:在特定的数组结构上使用array.sort()
- Chrome:如何解决Math.max.apply(Math,数组)上的“超出最大调用堆栈大小”错误
- ng在非数组对象上重复
- 在数组对象上迭代并计算平均值
- 在多维数组问题上用javascript实现foreach循环
- 可以't在包含节点的数组项上设置属性
- 在未定义的数组键上循环
- JavaScript:数组声明上的If语句
- 如何浏览作为链接列表的url数组以及上一个/下一个链接
- 这对于数组元素上的简单数组迭代操作来说是最有效的
- 试图获取数组的上界时未定义
- 数组对象上字符串值的总和
- 用于在数组参数上循环的Javascript
- 在数组javascript上添加变量