2016-11-04 8 views
0

Я ищу, чтобы построить что-то вроде разрыва расширения, используя Угловые 1.5 Компоненты. Идея состоит в том, что у вас может быть один или несколько из них подряд, или вы можете вложить их в дерево. Таким образом, действительный HTML может выглядеть следующим образом:Угловой 1.5 рекурсивно вложенный компонент

<expand-collapse title="This is my title"> 
    <p>This is my content</p> 
</expand-collapse> 

Или

<expand-collapse title="Level 1 Title"> 
    <expand-collapse title="Level 2 Title"> 
     <p>This is my content</p> 
    </expand-collapse> 
</expand-collapse> 

Итак, мой вопрос, могу ли я сделать это с помощью угловых 1.5 Компонента (не Directive) таким образом, что уровень расширения 2-го уровня может быть осведомлен о том, что его родительский разворот-сбой. Обычно, когда вы компонента гнезда, как это я думаю, вы бы что-то вроде:

component('expandCollapse', { 
    ... 
    require : { 
     parentCtrl : "^expandCollapse" 
    } 
    ... 

Однако A) гнездование не требуется в данном случае, и B) parentCtrl заканчивает тем, что нескончаемая рекурсивная ссылка на ток $ упр.

Это что-то, что можно сделать с помощью Компонентов? Или по какой-то причине он был явно запрещен?

+0

Возможно, вы ищете директиву с опцией пересылки? – Hoyen

+0

Ну, я специально хотел бы сделать это с помощью компонента, а не директивы. Я использую transclude, но это не решает ссылки на способ, которым я бы хотел. – LoganBlack

ответ

0

Я вижу только два пути:

  • Определить директиву для каждого уровня, требующего уровень precendent, это может привести к ненужному коду.
  • Поиск угловых функций: element.parent().controller('expand-collapse');. Этот подход обычно не рекомендуется, но я не вижу ничего более простого/более чистого, чем это.
+0

Спасибо за ответ. # 1 ограничил бы меня слоями X, которые я хочу избежать любой ценой. # 2 - это все, что я придумал до сих пор, но я надеюсь, что есть что-то более чистое. – LoganBlack

+0

@LoganBlack Правила эргономики пользовательского интерфейса определяли бы, вероятно, что-то вроде 5 или даже 3 слоев, вы делаете это неправильно. – Walfrat

+0

Правда, но все же не предел, который я хочу навязать. – LoganBlack