Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu estou montando um form para editar alguns dados, então uso o PHP/Codeigniter para montar a página com as informações. Acontece que existem umas caixas de escolha que possuem um código em AngularJS para executar uma fórmula e quando coloco o "ng-model", simplesmente some o item que deveria estar marcado.
Segue parte do form abaixo:
<div class="form-group">
<label>Trajetória:</label>
<?php echo form_input(array('type'=>"text", 'class'=>"form-control", 'name'=>'trajetoriaform','id'=>'trajetoriaform'),$riscoBD->__get('trajetoria')); ?>
</div>
<div class="form-group">
<label>Frequência:</label>
<?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"frequencia", "ng-change"=>"calcRisco()", 'name'=>'frequenciaform','id'=>'frequenciaform'), $frequencia, $riscoBD->__get('frequencia')); ?>
</div>
<div class="form-group">
<label>Probabilidade:</label>
<?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"probabilidade", "ng-change"=>"calcRisco()", 'name'=>'probabilidadeform','id'=>'probabilidadeform'), $probabilidade, set_value('probabilidadeform')); ?>
</div>
<div class="form-group">
<label>Severidade:</label>
<?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"severidade", "ng-change"=>"calcRisco()", 'name'=>'severidadeform','id'=>'severidadeform'), $severidade, set_value('severidadeform')); ?>
</div>
<div class="form-group">
<label>Risco:</label>
<?php echo form_input(array('type'=>"text", "ng-value"=>"resultadorisco", 'class'=>"form-control", 'name'=>'riscoform','id'=>'riscoform', "ng-model"=>"risco"),set_value('riscoform')); ?>
</div>
Quando gera o html, ao colocar para inspecionar o código de uma das caixas o código fica assim:
<div class="form-group">
<label>Frequência:</label>
<select class="form-control" ng-model="frequencia" ng-change="calcRisco()" name="frequenciaform" id="frequenciaform">
<option value="? undefined:undefined ?"></option>
<option value="1" selected="selected">Rara</option>
<option value="2">Eventual</option>
<option value="3">Habitual</option>
<option value="4">Permanente</option>
</select>
</div>
Essa linha "4" aparece do angularJS e é o que impede que apareça o valor selected.
Queria saber se tem algum geito de fazer o javascript mostrar o valor que vem do PHP.
Abaixo o script:
var app = angular.module('risco', []);
app.controller('CalculaRisco', function($scope) {
$scope.frequencia;
$scope.probabilidade;
$scope.severidade;
$scope.calcRisco = function () {
var freq = parseInt ($scope.frequencia);
var prob = parseInt ($scope.probabilidade);
var sev = parseInt ($scope.severidade); //console.log(sev+' '+prob+' '+freq);
risco = freq + prob + sev;
if (risco <= 4) {
$scope.risco = 'Baixo';
} else if (risco <= 7) {
$scope.risco = 'M\u00e9dio';
} else if (risco <= 10) {
$scope.risco = 'Alto';
} else {
$scope.risco = 'Muito Alto';
}
//console.log(risco+$scope.severidade);
};
});O PHP é pq o sistema todo está em PHP. E como o framework me facilita a montar o form eu acabo usando ele, mas poderia montar o form em html simples.
Na verdade o javascript que estou usando apenas para executar uma ação ao escolher opções no form. Isso funcionou muito bem no form para criar as informações. Mas quando fui criar o form para editar não consigo jogar os valores nos campos select por causa do AngularJS. Se tivesse uma forma de lançar esses valores no form eu mudaria. Só não estou sabendo fazer.
php ta vindo em forma de json?
console.log($scope);
Resolvi tirando o AngularJS, usei javascript puro.
Não era a solução que queria mas resolveu.
Se você utiliza o Angular que traz a você os dados, não tem logica e nem o porque você aplicar o php direto no documento.
Lembre-se que o angular é um MVC e por isso o ideal de utilização dado o seu exemplo seria
PHP - Faz suas condições e fornece o JSON
HTML - Printa o resultado na tela
Angular - Cria as condições para passar ao PHP, recuperar o json e criar as condições de view no html.
não intendo porque você está usando o php, já que está usando AngularJS, seria mais facil se usasse o php somente como "api".