【发布时间】:2015-09-22 03:48:06
【问题描述】:
当我在其他 ng-repeat 中的 ng-repeat 中使用插件警报时遇到了一些问题。
我有一个屏幕,我必须在其中选择一个类别,然后我需要选择一些产品。所选产品出现在警报插件中,我有四个按钮来选择所选产品的重要性级别。
每个按钮,在警报容器中设置不同的样式、成功、信息、警告和危险。
问题是:如果我选择了两个类别,并且这两个类别的产品相同,当我更改一个产品的样式时,另一个相同的产品也设置了样式。
我的代码是:
<div style='position:relative; top:0px; left:0px;' ng-repeat="cid in listaCidSelected[$index]">
<alert type="{{cid.type}}" close="removerCid(tuss, cid, $index)">
{{cid.CIDSC_DS_DESCRICAO}}
<button class="btn btn-xs btn-outline btn-primary" ng-click="definirTipoCid('success', cid, $index)"><label>Sem Importância</label></button>
<button class="btn btn-xs btn-outline btn-info" ng-click="definirTipoCid('info', cid, $index)"><label>Média</label></button>
<button class="btn btn-xs btn-outline btn-warning" ng-click="definirTipoCid('warning', cid, $index)"><label>Grave</label></button>
<button class="btn btn-xs btn-outline btn-danger" ng-click="definirTipoCid('danger', cid, $index)"><label>Gravíssima</label></button>
</alert>
</div>
如果我选择了两个或多个类别并为每个类别使用相同的产品,则此产品的警报会重复相同的样式:(type="{{cid.type}}")
补充控制器方法:
$scope.checkAssociarCidHandler = function(tuss, index, event){
$scope.listaCheckCid[index] = !$scope.listaCheckCid[index];
event.currentTarget.innerHTML = $scope.listaCheckCid[index] ? "Finalizar Associação" : "Associar Motivo(s)";
// Seleciona os checks com as CIDs ja selecionadas
if ($scope.listaCheckCid[index]){
for (var i = 0; i < $scope.listaTussSelected.length; i++) {
if ($scope.listaTussSelected[i].TUSSPR_CD_CODIGO == tuss.TUSSPR_CD_CODIGO){
for (var j = 0; j < $scope.listaCidSelected[i].length; j++) {
document.querySelector("#ckItemCheckT" + tuss.TUSSPR_CD_CODIGO + 'C' + $scope.listaCidSelected[i][j].CIDSC_CD_CODIGO).checked = true;
}
break;
}
}
}
}
$scope.checkCidHandler = function(cid, tuss, event){
for (var i = 0; i < $scope.listaTussSelected.length; i++) {
if ($scope.listaTussSelected[i].TUSSPR_CD_CODIGO == tuss.TUSSPR_CD_CODIGO){
// Associa uma CID
if (event.currentTarget.checked){
cid.type = "info";
$scope.listaCidSelected[i].push(cid);
}else{
// Desassocia uma CID
for (var j = 0; j < $scope.listaCidSelected[i].length; j++) {
if ($scope.listaCidSelected[i][j].CIDSC_CD_CODIGO == cid.CIDSC_CD_CODIGO){
$scope.listaCidSelected[i].splice(j, 1);
break;
}
}
}
break;
}
}
}
// Define a cor da CID
$scope.definirTipoCid = function(tipo, cid, index){
cid.type = tipo;
}
有人有什么想法吗? 谢谢。
【问题讨论】:
-
能分享一下你的控制器的代码吗?
-
我分享了所涉及的方法!感谢您的回复 Shim br!
标签: javascript angularjs