JSFiddle qui: http://jsfiddle.net/c6tzj6Lf/4/Disabilitare pulsante di invio in base a campi aggiunti con ng-bind-html
Sto generando dinamicamente forme e pulsanti e si desidera disattivare i pulsanti se gli ingressi di forma richiesti non sono stati completati.
HTML:
<div ng-app="choicesApp">
<ng-form name="choicesForm" ng-controller="ChoicesCtrl">
<div ng-bind-html="trustCustom()"></div>
<button ng-repeat="button in buttons" ng-disabled="choicesForm.$invalid">
{{button.text}}
</button>
</ng-form>
</div>
JavaScript:
angular.module('choicesApp', ['ngSanitize'])
.controller('ChoicesCtrl', ['$scope', '$sce', function($scope, $sce) {
$scope.custom = "Required Input: <input required type='text'>";
$scope.trustCustom = function() {
return $sce.trustAsHtml($scope.custom);
};
$scope.buttons = [
{text:'Submit 1'},
{text:'Submit 2'}];
}]);
choicesForm.$invalid
è false
e non cambia quando l'immissione del testo nel campo di immissione.
Soluzione:
ho finito per usare l'angolare-bind-html-compilare direttiva da qui: https://github.com/incuna/angular-bind-html-compile
Ecco il bit rilevante del codice di lavoro:
<ng-form name="choicesForm">
<div ng-if="choices" bind-html-compile="choices"></div>
<button ng-click="submitForm()" ng-disabled="choicesForm.$invalid">
Submit
</button>
</ng-form>
E le scelte potrebbero essere uno snippit di HTML come questo:
<div><strong>What is your sex?</strong></div>
<div>
<input type="radio" name="gender" ng-model="gender" value="female" required>
<label for="female"> Female</label><br>
<input type="radio" name="gender" ng-model="gender" value="male" required>
<label for="male"> Male</label>
</div>
si inietta la dipendenza ngSanitize? –
Sì, ho appena aggiornato il violino, se hai guardato una versione precedente potrebbe essersi rotto. – disperse
Quindi, qual è il problema? Riesco a vedere nel violino che i pulsanti sono abilitati/disabilitati. non lo è? –