javascript - parameter - Directiva Isolate Scope 1.2.2
scope directive angularjs (1)
En tu html:
<vendor-selector vendorId="someValue"></vendor-selector>
Cambiar vendorId="someValue"
a vendor-id="someValue"
Los atributos HTML no distinguen entre mayúsculas y minúsculas, por lo tanto, para evitar confusiones, Angular convierte todas las variables de camel case (vendorId) a los atributos de mayúsculas y minúsculas (id-vendedor).
Así que someValue
no estaba obligado a vendorId
. Resultando en vendorId
no definido en la plantilla. Y así tu error
Estoy trabajando con Angular versión 1.2.2 por primera vez y tratando de hacer una directiva simple que use un alcance aislado con enlace ''='' para pasar un objeto. He hecho esto algunas veces, así que me pregunto si tal vez hubo un cambio en 1.2.2 que cambió esto?
Aquí está mi directiva:
.directive(''vendorSelector'', function (VendorFactory) {
return {
restrict: ''E'',
replace: true,
scope: { vendorId: ''='' },
template: ''<select ng-model="vendorId" ng-options="id for id in vendorIds">'' +
''<option value="">-- choose vendor --</option>'' +
''</select>'',
link: function (scope, element, attrs) {
VendorFactory.getVendorIds().then(function(result) {
scope.vendorIds = result;
});
}
}
})
Mi plantilla HTML que usa la directiva es la siguiente:
<div class="padding">
<vendor-selector vendorId="someValue"></vendor-selector>
{{ someValue }}
</div>
Y el controlador de respaldo:
.controller(''AddProductController'', function($scope, ProductFactory, AlertFactory) {
$scope.vendorId = 0;
$scope.someValue = undefined;
})
He intentado usar tanto $ scope.someValue como $ scope.vendorId como el objeto suministrado en la plantilla html. En ambos casos, el error que estoy recibiendo es Expression ''undefined'' used with directive ''vendorSelector'' is non-assignable!
. ¿Me está perdiendo algo obvio que impide que estos valores se vinculen en 2 sentidos en el alcance aislado?