Javascript 如果第二个对象中的名称匹配,则隐藏按钮
嗨,我有两个对象,一个用于在表中显示列表Javascript 如果第二个对象中的名称匹配,则隐藏按钮,javascript,html,angularjs,Javascript,Html,Angularjs,嗨,我有两个对象,一个用于在表中显示列表 $scope.data=[ {"id" : "1","name" : "item1"}, {"id" : "2","name" : "item2"}, {"id" : "4","name" : "item4"}, {"id" : "7","name" : "item7"}, {"id" : "8","name" : "item8"}, {"id" : "9","name" : "item9"},
$scope.data=[
{"id" : "1","name" : "item1"},
{"id" : "2","name" : "item2"},
{"id" : "4","name" : "item4"},
{"id" : "7","name" : "item7"},
{"id" : "8","name" : "item8"},
{"id" : "9","name" : "item9"},
]
其中,对象由项目名称列表组成,如下所示
$scope.items=[
{id:"1",itemName:"item1"},
{id:"2",itemName:"item5"},
]
在表中,我显示了第一个对象中的数据以及每个tr中的按钮。现在,如果第二个对象中存在该项名称,我需要隐藏tr中的按钮
var c=angular.module('myApp',[])
c、 控制器('myCtrl',函数($scope){
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
]
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
]
})
你好,普朗克!
名称
行动
{{row.name}
编辑
您可以创建另一个这样的数组来保存itemName的值
$scope.values = $scope.items.map(i => i.itemName);
在你的模板中,像这样使用它
ng-hide="values.indexOf(row.name) > -1"
var c=angular.module('myApp',[])
c、 控制器('myCtrl',函数($scope){
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
]
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
];
$scope.values=$scope.items.map(i=>i.itemName);
})
你好,普朗克!
名称
行动
{{row.name}
编辑
在html按钮中使用类似的内容
<button type="submit" ng-if="checkIfExists(row.id)">Edit</button>
var c=angular.module('myApp',[])
c、 控制器('myCtrl',函数($scope){
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
]
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
];
$scope.checkIfExists=(id)=>$scope.items.map(elem=>elem.id).includes(id);
})
你好,普朗克!
名称
行动
{{row.name}
编辑
通过使用辅助程序库,例如下划线
或lodash
,可以使此解决方案简单得多,但这应该是可行的:
angular.module('myApp',[]).controller('myCtrl',function($scope){
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
];
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
];
$scope.itemExists=函数(名称){
var=false;
$scope.items.forEach(函数(elem){
if(elem.itemName==名称){
存在=真;
}
}));
回报存在;
}
});代码>
你好,普朗克!
名称
行动
{{row.name}
编辑
您可以在ng show
指令中使用JavaScript数组()的find
方法来完成以下任务:
var c=angular.module('myApp',[])
c、 控制器('myCtrl',函数($scope){
$scope.containsItem=功能(项){
return item.itemName==this;
};
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
]
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
]
})
你好,普朗克!
名称
行动
{{row.name}
编辑
创建一个新数组,并向该对象添加一个新键,如showButton
,其值将根据两个数组中的项目而定为true或false
var c=angular.module('myApp',[])
c、 控制器('myCtrl',函数($scope){
$scope.data=[{
“id”:“1”,
“名称”:“项目1”
},
{
“id”:“2”,
“名称”:“项目2”
},
{
“id”:“4”,
“名称”:“项目4”
},
{
“id”:“7”,
“名称”:“第7项”
},
{
“id”:“8”,
“名称”:“第8项”
},
{
“id”:“9”,
“名称”:“第9项”
},
]
$scope.items=[{
id:“1”,
项目名称:“项目1”
},
{
id:“2”,
项目名称:“项目5”
},
]
$scope.updateData=$scope.data.map(函数(项){
var findIndex=$scope.items.findIndex(函数(secItem)){
return item.id==secItem.id
});
如果(findIndex==-1){
返回{
“id”:项目id,
“名称”:item.name,
“showButton”:真
}
}否则{
返回{
“id”:项目id,
“名称”:item.name,
“showButton”:错误
}
}
});
});代码>
你好,普朗克!
名称
行动
{{row.name}
编辑
$scope.checkIfExists = (id) => $scope.items.map(elem=>elem.id).includes(id);