2016-09-22 8 views
0

В моем угловом выражении есть фрагмент кода, который повторяется в двух файлах. Я сделал это директивой, чтобы ее можно было повторно использовать. Я отправляю ему некоторые данные.Частицы в угловых, но не ng-include/директивах

Давайте предположим, что это шаблон:

<directive1 data="object"></directive1> 

Вот HTML директивы 1

<div class="a">{{data.x}}</div> 
<div class="b">{{data.y}}</div> 
<div class="c">{{ data.z}}</div> 

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

<directive2 data="similarObject"></directive2> 

Так что теперь вопрос, я хочу, чтобы это в моей директиве 2 HTML:

<div class="a">{{data.x}}</div> 
<div class="b">{{data.y}}</div> 

Но так как это будет дублироваться я запутался, как идти о делать это. Я не хочу использовать ng-include, так как он загружает шаблон асинхронно с клиентской стороны. Я просто хочу, чтобы мой код был модульным, поэтому HTML не дублируется. Я не возражаю, если HTML дублируется после сборки с моей системой глотков.

Нет ли каких-либо включений, которые включены во время компиляции? Поскольку я использую gulp как мою систему сборки, я надеюсь, что что-то вроде этого существует, так что я могу сделать что-то вроде require('./something'), как будто я делаю это в своем Javascript.

+0

Я хотел бы добавить флаг в вашу первую директиву, а затем добавить 'ng-show = [[ваш флаг здесь]" 'в последний div. –

+0

@JakubJankowski Даже я думал, что. Но я дал упрощенную версию той конкретной проблемы, которая у меня есть. это большой шаблон, и некоторые из его содержимого необходимы в представлении одного контроллера, и некоторые из них необходимы в нижней части одного и того же вида. Т.е. у меня нет выбора, кроме как разделить его каким-то образом или пойти по пути с дублированием :( –

+1

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

ответ

0

Можно использовать только одну директиву. Добавьте дополнительный атрибут в директиву.

<directive1 data="object" type="page1"></directive1> 

Для вызова со второй страницы, где требуются дополнительные стили:

<directive1 data="similarObject" type="page2"></directive1> 

Пусть дополнительные CSS строки кода в экстра-Css класса. Следовательно, мы будем устанавливать класс условно.

<div class="a" ng-class="{ 'extra-css' : type === 'page2' }">{{data.x}}</div> 
<div class="b" ng-class="{ 'extra-css' : type === 'page2' }">{{data.y}}</div> 
<div class="c" ng-if="type === 'page1'">{{ data.z}}</div> 
+0

Как я уже упоминал, я не хочу этого делать из-за тех ng-if & ng-class, которые попадают в мой шаблон. Я бы предпочел дублировать его, чем делать это. Спасибо за предложение btw. –

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

  • Нет связанных вопросов^_^