2015-07-02 2 views
2

Я написал свою собственную угловую директиву под названием <my-table>, так как я использую ее несколько раз, передавая разные данные для отображения. Все таблицы имеют кнопку, при нажатии появляется всплывающее окно формы, например, так:Каков правильный способ расширения поведения пользовательской угловой директивы?

popup example

Однако для одного из <my-table> директив, я хочу, чтобы расширить поведение так, что он действует несколько отличается от другой <my-table> s. Например, предположим, что для формы, которая появляется, появится окно предупреждения, когда вы нажмете Submit, показывая данные, присутствующие в области <my-table>.

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

+1

* «Возможно ли это, или просто с помощью директивы я неправильно?» * Зависит от того, как вы реализуете директиву, в первую очередь. – dfsq

+0

Вы можете получить гораздо более полезную помощь по этому вопросу, если вы опубликуете plunkr/codepen с директивой (или директивой примера). – shieldstroy

+0

Я попытался использовать что-то вроде следующего: '' где 'add-more-behavior' - еще одна директива. Однако мне не показалось, что я мог делиться данными между двумя директивами. – sirwebber

ответ

0

Вы можете сделать что-то в этом смысле:

<my-table on-submit="doSomething(message)"></my-table> 

В определении директивы вашей моего стола вы бы связать свой обратный вызов сферы:

scope: { 
     'submit': '&onSubmit' 
    }, 

Затем в контроллере вы определяете функцию :

$scope.doSomething = function(message) { 
    alert(message); 
} 

В вашем шаблоне, где вы определяете кнопку отправки, вы бы сделали :

<button ng-click="submit({message: 'bye!'})"></button> 

Вы можете ссылаться на документацию угловую для получения дополнительной информации: https://docs.angularjs.org/guide/directive

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