2016-01-11 8 views
1

Я создал директиву, чтобы я мог закрыть bootstrap-modal с функцией внутри контроллера на событии успеха. То, что я пытался этоОбласть действия директивы для контроллера

//Directive 
.directive('modalBox', function() { 
    return { 
     restrict: 'C', 
     link: function(scope, element) { 
      console.log(element); 
      scope.dismiss  = function() { 
       element.modal('hide'); 
      }; 
      scope.dismissModal = function(inputClass) { 
       $('.' + inputClass).modal('hide'); 
      }; 
     } 
    }; 
}); 

HTML, как

<div id="myModal" data-backdrop="static" class="modal fade modalBox myModal" tabindex="-1" role="dialog" aria-hidden="true"> 
<div class="modal-dialog modal-xlg"> 
    <div class="modal-content"> 
     <div class="modal-header modal-header-danger"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 
      <h4 class="margin-none" ng-if="!operation">Add Fuel Entry</h4> 
      <h4 class="margin-none" ng-if="operation">Update Fuel Entry</h4> 
     </div> 
     <div class="modal-body">My Form Data 
</div> 
    </div> 
</div> 

и в контроллере я реализую это нравится -

$scope.closeModal = function() { 
     $scope.dismissModal('myModal'); 
}; 

Его дает мне ошибку неопределенными. Где я поступаю неправильно.

+0

ли вы конвертировать директива от camelCase к кебабу-футляру для HTML.? т.е. использовать «модальный ящик» в HTML? – georgeawg

+0

Я тоже пробовал. – Sankalp

ответ

1

Если вы создаете директиву, вы должны привязать этот метод closeModal внутри директивы. Поскольку вы используете модальную форму бутстрапа, вы также должны рассмотреть возможность использования компонента угловой бутстрапа.

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

HTML:

<div id="myModal" data-backdrop="static" class="modal fade modalBox myModal" tabindex="-1" role="dialog" aria-hidden="true"> 
    <div class="modal-dialog modal-xlg"> 
     <div class="modal-content"> 
      <div class="modal-header modal-header-danger"> 
      <button type="button" class="close" ng-click="closeModal('myModal') aria-hidden="true">×</button> 
      <h4 class="margin-none" ng-if="!operation">Add Fuel Entry</h4> 
      <h4 class="margin-none" ng-if="operation">Update Fuel Entry</h4> 
     </div> 
     <div class="modal-body">My Form Data 
     </div> 
    </div> 
</div> 

и на контроллере:

$scope.closeModal = function(modalId) { 
    $("#" + modalId).modal('hide'); 
}; 
+0

Я мог закрыть его с кнопки, но это не мой вопрос. Я хочу привязать его к Директиве и выполнить тесную функциональность от их. Чтобы сделать метод comman в целом приложении. – Sankalp

+0

@Sankalp, если вы хотите использовать его в качестве директивы, разве не рекомендуется отображать HTML-код модала, используя свойство 'templateUrl' или' template' директивы? Тогда вы можете привязать методы кнопки не к области контроллера, а к области действия директивы. Кажется, это лучше подходит вашим потребностям ... – Tofani

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