Penso che la risposta più semplice/pulito non è ancora stato incluso per questa domanda. Questa risposta si inserisce anche all'interno della HTML5 Spec per un attributo booleano - attribuisce http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes
2.5.2 booleano
una serie di attributi sono attributi booleani.La presenza di un attributo booleano su un elemento rappresenta il valore vero e l'assenza dello attributo rappresenta il valore falso.
Se l'attributo è presente, il suo valore deve essere o la stringa vuota o un valore che è una corrispondenza case-insensitive ASCII per nome canonico dell'attributo , senza spazi iniziali o finali.
I valori "true" e "false" non sono consentiti sugli attributi booleani. Per rappresenta un valore falso, l'attributo deve essere omesso del tutto.
HTML:
<city-zip city="clientCity" zip="clientZip" requiredParam></city-zip>
e la direttiva:
.directive('cityZip', function() {
return {
restrict: 'E',
templateUrl: '../templates/templateCityZip.html',
scope: {
city: '=',
zip: '='
},
controller: function($scope, $attrs) {
$scope.requiredParamExists = $attrs.hasOwnProperty('requiredParam');
}
}
});
Semplice, si adatta in modo pulito con HTML5 spec per gli attributi booleani, e non c'è bisogno di forzare una stringa ad una variabile ambito ('requiredParam': '='
).
Nota nel codice di esempio sopra riportato, se minified, le variabili richieste $scope
e $attrs
cambieranno in una stringa più breve e interromperanno il codice, ma questo è un altro problema.
Basta creare una variabile di ambito per verificarlo. Non è necessario passare come stringa. Dovresti passare come variabile – Fals