templateurl parameter directives directivas custom compile javascript angularjs angularjs-directive angularjs-scope

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?