2014-10-04 3 views
-1

У меня есть простая директива, как этотДиректива не может получить доступ к источнику данных области действия

Вид:

<div ng-if="newReg.checkedDomains.length>0">  
    <div extension-list="newReg.checkedDomains"></div> 
</div> 

Директива:

angular.module('starweb') 
.directive('extensionList', function() { 
    return { 
     link: function (scope, element, attrs) { 

      var data = scope[attrs['extensionList']]; 
      console.log(data); 
     }, 

     template:"<div>test</div>" 
    } 
}); 

журнал консоль всегда показывает Undefined? Почему директива не может получить доступ к исходным данным extensionList?

+1

Объем [ATTRS [ 'extensionList']] переводит сферу [ 'newReg.checkedDomains'], который не определен. Это должно быть scope.newReg.checkedDomains или scope [newReg] [checkedDomains] –

ответ

0

extensionList атрибут содержит связующее выражение, цепочку свойств с точкой, к которой нельзя напрямую обращаться с обозначением скобки на объекте. Так что вам просто нужно будет eval это на сфере. Если бы это было просто свойство непосредственно в области видимости, то скопированная нотация, которую вы пытаетесь сделать в области видимости, сработала бы, но в вашем фактическом случае вы на один уровень ниже (при условии, что имя атрибута и имя свойства в области одинаковы).

Попытка: -

var data = scope.$eval(attrs.extensionList); 
console.log(data); 

Demo

+0

благодарит за вашу помощь. он работает нормально, но как-то в моем случае он всегда возвращает первый объект, возможно, я что-то сделал. Я это выясню. thnx снова –

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