Должны ли Angular Services управлять DOM?

0

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

й

function MyController($sope, myModal) {

   // Submit a form
   $scope.submit = function() {
      if (formIsValid) {
         // do stuff
      } else {
         myModal.show({
            templateUrl: 'sometemplate.html',
            controller: 'MyModalController'
         }).then(function() {
            // do stuff
         });
      }
   }

}

Пытаясь подумать о разных способах этого, и кажется, что самый простой способ - заставить службу внедрить элемент DOM в page-

function MyModalService($http, $compile, $controller, $rootScope) {

   this.show = function (options) {
      var $scope = $rootScope.$new(true);
      $controller(options.controller, {
         $scope: $scope
      });

      $http.get(options).success(function(html) {
         var ele = $compile(html)($scope);

         // Bad practice? Alternatives?
         angular.element('body').append(ele);
      });
   }

}

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

  • 0
    Сервис кажется подходящим местом для меня.
  • 2
    Я бы пошел с директивами
Показать ещё 10 комментариев
Теги:
dom
angular-services

1 ответ

0
Лучший ответ

Это звучит очень похоже на то, что угловой бутстрап делает для их модальности.

Вы можете проверить их реализацию здесь: https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.js (см. Строку 452)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню