2015-06-17 3 views
0

Изолировать область неудобно, потому что директива перестает наследовать от родительских областей.как разделить области без изолировать область?

Так прямо сейчас, когда я хочу использовать ту же директиву в том же объеме, который я использую ng-if отделить директиву областей, как так:

<some-directive 
    ng-if="true" 
    var1="'wtva'" 
    var2="{{wtv2a}}" 
    var3="wtv2a" 
></some-directive> 

<some-directive 
    ng-if="true" 
    var1="'wtvb'" 
    var2="{{wtv2b}}" 
    var3="wtv2b" 
></some-directive> 

Таким образом, атрибуты из обеих директив не смешиваются без необходимости прибегать к изоляции области.

До сих пор я не заметил никаких проблем с этим подходом, но он выглядит хаки .. Есть ли лучший способ сделать это?

+3

Почему бы не «прибегнуть к изоляции сферы»? Во всяком случае, тот же эффект, что и в случае с «ng-if», может быть достигнут с указанием «scope: true» в вашей директиве. –

+0

с использованием изолированной области для многоразового компонента - хороший подход. Если вы хотите передать переменные области, то вы можете использовать '=', '@' & '&' согласно требованию –

+0

Пока вы не используете область действия, тогда i не вижу проблемы. В противном случае вам необходимо определить дочернюю область «scope = true». Но если вам нужна двухсторонняя привязка, лучше использовать изолированную область. – Michael

ответ

1

Как уже упоминалось в комментариях вы можете использовать:

scope: true 

Однако я хотел бы только отметить одну область предостережением, если вы принять этот подход: Любая собственность на основе объекта на сферу, если унаследованная (т. е. новая область), созданная этой директивой, изменяет свойство объекта через «пунктир» (например, someObj.name = «какое-то новое значение»), то это будет отражено и в родительской области. И пример этого можно увидеть здесь:

http://plnkr.co/edit/A1hNG5EUr8vcCNOAEp7P?p=preview

Как таковой, я согласен, что происходит с изолята области видимости подхода, переходящая в зависимости от того, свойства которого нужно через «@», «=», и т.д. будет Лучший.

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