Un parámetro de la directiva de AngularJS tiene valor undefined
Estaba modificando una directiva de un tercero y me estaba volviendo loco con un valor que siempre estaba undefined
. La directiva era sencilla y no entendía cual era el error.
La definición del scope
dentro de la directiva es esta:
scope: {
searchParam: '=ngModel',
suggestions: '=data',
onType: '=onType',
formId: '=formId',
onSelect: '=onSelect',
autocompleteRequired: '='
}
Y el uso de la directiva es este:
<autocomplete
ng-model="vm.sCompanyName"
data="vm.aInsuranceCompanies"
form-id="bikeInsuranceAlert"
on-type="vm.autocompleteChange">
</autocomplete>
El valor que me interesa obtener es el formId
. ¿Veis el error? Es sutil…
form-id="'bikeInsuranceAlert'"
Faltaban unas comillas simples dentro de las dobles para obtener el valor del ID como una cadena. Lo que AngularJS estaba interpretando es que quería obtener el valor de una variable llamada bikeInsuranceAlert
dentro del scope
. Evidentemente esta variable no existe, y el valor asignado era undefined
.
Que traicionero es AngularJS en ocasiones…