我有一个非常简单的 html 页面,我使用了一些 Angular JS。每个字段都有它的启用/禁用滚动。在特定字段 INCLUIR SEGURO 上,我调用了一个名为ValidaIncluirSeguro的方法,这是我的问题的根源。此方法根据硬编码值验证汽车的价值,并且根据该值,它必须禁用 Incluir Seguro 字段并显示警告,警告用户汽车的价值太贵。我的问题是,我第一次选择了值 Tipo = Automóvel(默认)。Marca = HONDA, Modelo = CIVIC, Ano, 2010 警报被调用两次。我知道这是因为消化周期,但我该如何解决呢?我不希望它被提示两次。
谁能告诉我如何才能修复它?
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script>
var app = angular.module('mainApp', []);
app.controller('mainController', function ($scope) {
$scope.ValidaIncluirSeguro = function (veiculo) {
try {
if (!veiculo.ano)
return true;
var valorMaximo = 15000000;
//VALIDO O VALOR DO VEÍCULO
var bloqueiaDevidoAoValor = $scope.ValidaValorMaximo(veiculo.ano.valor, valorMaximo);
if (bloqueiaDevidoAoValor) {
alert("Veículo fora da regra de aceitação do seguro devido ao valor do veículo de R$ " + (FormatarReal(veiculo.ano.valor)).toString() + ". Venda disponível apenas do rastreador com apoio a localização.");
//veiculo.incluirSeguro = "0";
return true;
}
return false;
} catch (e) {
alert("Erro no método [ValidaIncluirSeguro]. Detalhes do erro: " + e.message);
}
}
$scope.ValidaValorMaximo = function (valorVeiculo, valorMaximo) {
if (valorVeiculo > valorMaximo)
return true
else
return false;
}
//DADOS MOCADOS - ESTES DADOS DEVERÃO SER SUBSTITUÍDOS PELOS DADOS DO WEBSERVICE
$scope.DadosMocados = function () {
$scope.fipe = [
{
nome: 'HONDA', modelos: [{
nome: "CIVIC", codigoFipe: 1, anos: [{ ano: 1995, valor: 15000000 }, { ano: 2009, valor: 15100000 }, { ano: 2010, valor: 16000000 }]
},
{
nome: "CITY", codigoFipe: 2, anos: [{ ano: 2013, valor: 12300 }, { ano: 2014, valor: 13300 }, { ano: 2015, valor: 14300 }]
},
{
nome: "FIT", codigoFipe: 3, anos: [{ ano: 2015, valor: 12500 }, { ano: 2016, valor: 13500 }, { ano: 2017, valor: 14500 }]
}]
},
{
nome: 'FIAT', modelos: [{
nome: "BRAVO", codigoFipe: 4, anos: [{ ano: 2016, valor: 12800 }, { ano: 2017, valor: 13800 }, { ano: 2018, valor: 14800 }]
},
{
nome: "UNO", codigoFipe: 5, anos: [{ ano: 1990, valor: 12900 }, { ano: 1991, valor: 13900 }, { ano: 1992, valor: 14900 }]
},
{
nome: "SIENA", codigoFipe: 6, anos: [{ ano: 2001, valor: 12100 }, { ano: 2002, valor: 13100 }, { ano: 2003, valor: 14100 }]
}]
},
{
nome: 'BMW', modelos: [{
nome: "X1", codigoFipe: 7, anos: [{ ano: 2015, valor: 20000 }, { ano: 2016, valor: 30000 }, { ano: 2017, valor: 40000 }]
},
{
nome: "X6", codigoFipe: 8, anos: [{ ano: 2010, valor: 50000 }, { ano: 2011, valor: 60000 }, { ano: 2012, valor: 70000 }]
},
{
nome: "320i", codigoFipe: 9, anos: [{ ano: 2012, valor: 120000 }, { ano: 2013, valor: 220000 }, { ano: 2013, valor: 330000 }]
}]
},
];
}
//ONLOAD
$scope.DadosMocados();
});
function FormatarReal(int) {
try {
var tmp = int + '';
tmp = tmp.replace(/([0-9]{2})$/g, ",$1");
if (tmp.length > 6)
tmp = tmp.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2");
return tmp;
} catch (e) {
alert("Erro no método [FormatarReal]. Detalhes do erro: " + e.message);
}
}
</script>
<table class="table table-sm">
<thead>
<tr>
<th width="15%">Tipo</th>
<th width="20%">Marca</th>
<th width="40%">Modelo</th>
<th width="15%">Ano</th>
<th width="10%">Incluir Seguro</th>
</tr>
</thead>
<tbody>
<tr>
<!----------------------------TIPO---------------------------->
<td>
<select ng-model="veiculos[0].tipo" ng-init="veiculos[0].tipo='1'" class=" form-control">
<option value="1">Automóvel</option>
<option value="2">Moto</option>
<option value="3">Caminhão</option>
</select>
</td>
<!----------------------------MARCA---------------------------->
<td>
<select ng-model="veiculos[0].marca" ng-options="marca as marca.nome for marca in fipe" class="form-control">
<option></option>
</select>
</td>
<!----------------------------MODELO---------------------------->
<td>
<select ng-model="veiculos[0].modelo" ng-disabled="HasValue(veiculos[0].marca)" class="form-control" ng-options="modelo as modelo.nome for modelo in veiculos[0].marca.modelos">
<option></option>
</select>
</td>
<!----------------------------ANO---------------------------->
<td>
<select ng-model="veiculos[0].ano" ng-disabled="HasValue(veiculos[0].modelo)" class=" form-control" ng-options="ano as ano.ano for ano in veiculos[0].modelo.anos">
<option></option>
</select>
</td>
<!----------------------------INCLUIR SEGURO---------------------------->
<td>
<!--<select ng-model="veiculos[0].incluirSeguro" ng-disabled="ValidaIncluirSeguro(veiculos[0])" ng-init="veiculos[0].incluirSeguro='1'" class=" form-control">-->
<select ng-disabled="ValidaIncluirSeguro(veiculos[0])" class=" form-control">
<option value="1">Sim</option>
<option value="0">Não</option>
</select>
</td>
</tr>
</tbody>
</table>