2014-11-25 2 views
4

Я пишу подвесную систему в Angular.js, что выглядит следующим образом:требует контроллера материнской директивы, когда родитель директива не известен

<grid> 
    <data-row> 
    <cell> 
    </cell> 
    </data-row> 

    .... 

    <group-row> 
    <cell> 
    </cell> 
    </group-row> 
</grid> 

Мне нужно достичь контроллера в Роу внутри клеток, но как вы можете видеть, существует несколько типов строк, поэтому я не могу написать это внутри директивы клетки:

return { 
    ... 
    require: '^row' 
} 

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

+0

Вы можете скопировать код в jsfiddle? Вы можете воспользоваться атрибутом controllerAs, но это зависит от вашей архитектуры. – Lukmo

+0

Оформить заказ [Использование нескольких директив, требуемых с помощью Angularjs] (http://stackoverflow.com/questions/25506827/using-multiple-directives-in-require-with-angularjs). – shawnzhu

ответ

2

Итак, два варианта.

1) У вас есть одна директива элемента row, которую вы затем украшаете директивами атрибутов row-type. Тогда вы должны были бы require вставить строку в свои ячейки и в свои декораторы рядового типа.

<grid> 
    <row row-type="data"> 
    <cell> 
    </cell> 
    </row> 

    .... 

    <row row-type="group"> 
    <cell> 
    </cell> 
    </row> 
</grid> 

2) Попросите директиву ячейки требуется несколько дополнительных родителей -

return { 
    ... 
    require: ["?data-row", "?group-row"], 
    ... 
} 

И обрабатывать ваши различные логики в функции, связывающей вашей клетки на основе наличия или отсутствия одного или другого. Это кажется мне немного грязнее, но может работать на то, что вам нужно.

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