3

Я впервые работаю с Угловой версией 1.2.2 и пытаюсь создать простую директиву, использующую область выделения с привязкой '=' для передачи объекта. Я делал это несколько раз раньше, поэтому мне интересно, возможно ли изменение в 1.2.2, которое изменило это?Директива Isolate Scope 1.2.2

Вот моя директива:

.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; 
      }); 
     } 
    } 
}) 

Мой шаблон HTML с помощью директивы выглядит следующим образом:

<div class="padding"> 
    <vendor-selector vendorId="someValue"></vendor-selector> 
    {{ someValue }} 
</div> 

И контроллер изнанка:

.controller('AddProductController', function($scope, ProductFactory, AlertFactory) { 
    $scope.vendorId = 0; 
    $scope.someValue = undefined; 
}) 

Я попытался с помощью как $ scope.someValue, так и $ scope.vendorId как предоставленный объект в шаблоне html. В обоих случаях ошибка, которую я возвращаю, - Expression 'undefined' used with directive 'vendorSelector' is non-assignable!. Я упускаю что-то очевидное, что мешает этим значениям быть двунаправленными в области выделения?

ответ

3

В вашем HTML:

<vendor-selector vendorId="someValue"></vendor-selector> 

Изменение vendorId="someValue"

к vendor-id="someValue"

HTML атрибуты чувствительны к регистру так, чтобы избежать путаницы Угловые новообращенных все верблюд обсаженных переменные (VendorID) для атрибутов змеи случай (продавец-идентификатор).

So someValue не был связан с vendorId. Результат в vendorId не определен в шаблоне. И, таким образом, ваша ошибка.

+0

Спасибо! Вы джентльмен и ученый. Я должен был знать лучше, так как я соответствующим образом изменил название директивы для camelCase, просто полностью упустив атрибут: P –

+2

В версии 1.2 произошла куча изменений, в том числе связанных с изолированной областью, поэтому я полностью отношусь к вашему мышлению , Всегда пожалуйста! – KayakDave

+2

Там было множество изменений: А именно, это работает! (Не принимает во внимание неизолирующие директивы для одного и того же элемента.) Кроме того, приоритет привязки в обратном порядке. – jpsimons

Смежные вопросы