Comment créer une directive pour désactiver tous les éléments dans l'élément div
comment créer une directive pour désactiver tous les éléments dans l'élément div ?
quelque chose comme ceci :
<div div-disabled div-disabled-condition="state=='Stack'||state=='Over'||state=='Flow'">
<input type="text"/>
<input type="url"/>
<div>
<input type="text"/>
<input type="url"/>
</div>
<div>
Est-il possible? Je n'ai aucune idée .
angular
.module('uiRouterApp.ctrl.add', ['uiRouterApp.ctrl.customDirective'])
.controller('addCtrl', [
'$scope',
'$location',
'$stateParams',
'$state',
function ($scope, $location, $stateParams, $state) {
$scope.state = {};
}
]).directive('divDisabled', function () {
return {
scope: {
divDisabledCondition: '@'
},
link: function (scope, element, attrs) {
}
};
});
Mise à jour :
veuillez voir ceci :
<div class="col-sm-12 ng-isolate-scope" selected-object="SelectedAutoComplete" local-data="requirements.Item1" search-fields="NameFa,NameEn" title-field="NameFa" minlength="2" field-required="true" image-field="ImageUrl" disable-auto-compelete="response.State=='Success'||response.State=='Error'||response.State=='Warning'">
<div class="angucomplete-holder">
<input id="_value" ng-model="searchStr" type="text" placeholder="select" class="form-control ng-dirty" ng-focus="resetHideResults()" ng-blur="hideResults()" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" ng-disabled="response.State=='Success'||response.State=='Error'||response.State=='Warning'" style="">
<!-- ngIf: showDropdown -->
</div>
</div>
directive :
.directive('contentsDisabled', function() {
return {
compile: function(tElem, tAttrs) {
var inputs = tElem.find('input');
for (var i = 0; i < inputs.length; i++) {
inputs.attr('ng-disabled', tAttrs['disableAutoCompelete']);
}
}
}
})
pourquoi, Lorsque le state
est "Succès" ou "Erreur" ou "Avertissement" d'Entrée n'a pas été désactivée ?
OriginalL'auteur Football-Is-My-Life | 2014-09-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une directive qui modifie son contenu au cours de la compilation par l'ajout de la condition. Quelque chose le long de ces lignes (non testé):
Voir un JSFiddle ici: http://jsfiddle.net/HB7LU/6380/
Cela a l'inconvénient que vous venez de copier l'expression de
contents-disabled
enng-disabled
attributs des entrées - si quelqu'un utilise une directive qui à son tour crée<input>
éléments, vous n'aurez pas à les ramasser.Ce serait moins fragile pour se procurer de l'
FormController
instance et d'itérer sur toutes les commandes, mais, malheureusement, AngularJS ne pas exposer les contrôles dans un formulaire. Peut-être déposer une demande de fonctionnalité?Je pense que c'est juste parce que vous avez une tonne de fautes de frappe dans votre code. Voir ici pour un violon: jsfiddle.net/HB7LU/6380
Pourriez-vous partager ce qui est la raison d'avoir le cycle vide à l'intérieur de la directive de code (JsFiddle)?
J'ai mis à jour votre approche pour le cas lorsque des éléments ont déjà ng-désactiver l'attribut présent: jsfiddle.net/4yvza3xp/1
OriginalL'auteur Martin Probst
Vous pouvez également utiliser une balise fieldset :
Avec cette façon, lorsque la variable toto est VRAI, les entrées "the_one" et "the_second" sera désactivé.
OriginalL'auteur fieldset_killer
Pourquoi n'utilisez-vous pas
ng-disabled
sur votre expression sur chaque entrée?https://docs.angularjs.org/api/ng/directive/ngDisabled
Si vous voulez vraiment faire un groupement directive, l'utilisation de la
compile
fonction de la directive pour insérer leng-disabled
attribut de chaque enfant. Ou utiliser une parenthèse pas enfant directive pour signifier lequel les enfants à appliquer lesng-disabled
.<div class="ng-isolate-scope" angucomplete-alt="" id="ex1" placeholder="Search countries" pause="100" selected-object="selectedCountry" local-data="countries" search-fields="name" title-field="name" minlength="1" input-class="form-control form-control-small" match-class="highlight"></div>
OriginalL'auteur Matt Way
Il y a une nouvelle option pour contrôler activer/désactiver le champ de saisie pour angucomplete-alt.
http://ghiden.github.io/angucomplete-alt/#example13
OriginalL'auteur ghiden