2015-08-28 2 views
1

Недавно я переключился с jQuery на Angularjs, и я перерабатываю некоторую логику разбиения на страницы для ссылок («Next», «Previous» и т. Д.), Которые ранее были написаны в Javascript jQuery.Angularjs: это подходящее место для использования директивы?

Каждое звено имеет условие ngIf (например, «Назад» ссылка не будет отображаться, если вы находитесь на странице 1) плюс ngClick события, которое существенно обновляет переменную области действия с именем $ сферы. pagination.position, которая определяет, какие результаты отображаются в таблице.

Мой исходный код был что-то вроде этого (упрощенный для ясности):

шаблона

<a ng-if="pagination.position > 0" ng-click="pagination.first()">First</a> 

Контроллер

$scope.pagination = { 
    first: function() { 
     this.position = 0; 
    } 
} 

Тогда я узнал больше о директивах, и как большинство элементов DOM, которые не являются статическими HTML, должны создаваться с использованием директивы е. Поэтому я переключился каждую ссылку (так как каждый имеет свои собственные правила отображения и поведения на щелчки) в своей собственной директивы, например, так:

Шаблон

<a pagination-first></a> 

Директива

app.directive('paginationFirst', function() { 
    return { 
     link: function(scope,el,attr) { 
     scope.pagination.first = function() { 
      scope.pagination.position = 0; 
     } 
     }, 
     replace: true, 
     template: '<a pagination-first ng-if="pagination.position > 0" ng-click="pagination.first()">First</a>' 
    } 
}); 

Я перейду прямо к погоне: неправильно ли я делаю директивы? Все, что произошло, с моей точки зрения, это то, что я перешел от логики в своем шаблоне к шаблону в своей логике, и я определил функцию события click в директиве, а не в контроллере.

Действительно ли это подходящее время для использования директивы?

Я хотел бы узнать лучшие практики, поэтому я хотел бы знать, пропустил ли я этот пункт, и если первоначальный подход на основе шаблонов ngIf и функций контроллера был прекрасен даже при более длинных и более сложных условиях ngIf чем показанный.

+0

Вы сталкиваетесь с некоторыми проблемами в директиве? Кроме того, я предлагаю создать директиву для разбивки на страницы для каждой страницы. –

+0

Не так, я просто не видел никакой пользы в разделении ссылок на страницы в директивы и предполагал, что это было потому, что это было не лучшим вариантом для директив , Благодарю. – user3494677

ответ

0

Если я хочу добавить определенное поведение в список dom или dom, тогда я обычно создаю директиву. В соответствии с угловой точкой зрения, манипуляция с домом должна выполняться только с помощью директивы (для меня это лучшее место, когда-то я должен не подчиняться этому из-за моей нехватки знаний). Я специально нашел, что директива полностью используется при создании виджета. В одном из моих проектов была часть, где раздел предназначен для отображения изображения, а также загрузки изображения. Я просто использую директиву в верхнем div, с помощью функции ссылки я привязывал обработчики событий к различным дочерним dom. И так как моему проекту не требуется изолированная область (поскольку этот виджет использовался в одном проекте, и внешняя область была под моим контролем). Так оно и работало как шарм. Однажды я включил эту директиву. И использовал этот виджет через остальную часть проекта, так как его поведение и дизайн (виджета) были одинаковыми в рамках проекта. Для виджета для разбивки на страницы вы можете создать директиву. Возьмите директиву в качестве значения параметров разбиения на страницы. Как вызов скрипта, ограничение по лимиту. Идентификатор контейнера для обновления содержимого. Тогда вы можете сосредоточиться только на паганиационном поведении. Но по моему опыту (поскольку я также не настолько опытен в угловых js), иногда становится немного беспокойным разработать директиву и использовать ее во всем проекте. Как и в некоторых местах, нам нужно изменить поведение директивы.И для этого он может сломаться в другом месте. Но я знаю, как я узнаю больше, я буду более эффективен в такой ситуации. Надеюсь, мой опыт поможет вам.

+0

Спасибо за предложения. Вчера я читал о директивах и получил определенную ясность по этому вопросу. – user3494677

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