2014-01-12 8 views
13

Я создал две директивы:AngularJs: несколько директив просящего изолированного объема на

directivesModule.directive("capital", function() { 
return { 
    scope: { 
     capital: "@" 
    }, 
    link: function() {} 
} 
}) 

directivesModule.directive("country", function() { 
return { 
    scope: { 
     country: "@" 
    }, 
    link: function() {} 
} 
}) 

Далее, я использую их в одном элементе:

<div country="Russia" capital="Moscow"></div> 

В результате, я получаю сообщение об ошибке: Error: [$compile:multidir] Multiple directives [capital, country] asking for new/isolated scope on: <div country="Russia" capital="Moscow">

Как получить значения атрибутов без области видимости? Эти директивы не обязательно будут использоваться совместно.

+0

Посмотрите здесь, почему вы получите эту ошибку http://docs.angularjs.org/error/$compile:multidir?p0=capital&p1=country&p2=new%2Fisolated%20scope&p3=%3Cdiv%20country % 3D% 22Russia% 22% 20capital% 3D% 22Moscow% 22% 3E – Reza

+0

Как получить значения атрибута без области видимости? – Rustam

+2

Вы можете использовать аргумент 'Attrs' (третий) в вашей функции связывания, а затем' $ eval' или '$ parse' его против вашей области действия в теле функции. –

ответ

17

В соответствии с вашим кодом для получения значения атрибута вам не требуется изолированная область. Просто используйте это:

directivesModule.directive("capital", function ($parse) { 
return { 
    link: function (scope, element, attrs) { 

     // get attrs value 
     attrs.capital 

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