angularjs
  • angular-ui-bootstrap
  • 2016-12-30 4 views 0 likes 
    0

    У меня есть компонент (родительский компонент), в котором я отображать модальный с помощью:Переходя функцию углового Js компонента

    showModal() { 
        this.modalInstance = this.modal.open({ 
         template: "<upload-modal on-close='$ctrl.closeModal()'></upload-modal>" 
        }); 
    } 
    

    Это код для компонента загрузки (ребенок компонент):

    import uploadController from "./upload.controller"; 
    export const UPLOAD_COMPONENT_NAME = "uploadModal"; 
    
    export const uploadComponent = { 
        templateUrl: "templates/profile/upload-image.html", 
        controller: uploadController, 
        bindings: { 
        'onClose': "&" 
        } 
    }; 
    

    Это, как я вызвать функцию OnClose (загрузка-image.html):

    <div class="modal-content"> 
    <form id="addReview" name="addReview" role="form" class="form-horizontal"> 
        <div class="modal-header"> 
         <button type="button" ng-click="$ctrl.onClose()" class="close"><span 
           aria-hidden="true">×</span><span class="sr-only">Close</span></button> 
         <h4 id="myModalLabel" class="modal-title">Upload your profile image</h4> 
        </div> 
        <div class="modal-body"> 
         <input id="input-id" type="file" class="file" data-preview-file-type="image"> 
        </div> 
        <div class="modal-footer"> 
         <button ng-click="$ctrl.onClose()" type="button" class="btn btn-default"> 
          Cancel 
         </button> 
         <button type="submit" class="btn btn-primary">Update</button> 
        </div> 
    </form> 
    

    Однако функция closeModal в родительском компоненте никогда не вызывается. Что я здесь делаю неправильно?

    ответ

    0

    Вам нужно передать функции к компоненту, не это призывание

    изменение:

    template: "<upload-modal on-close='$ctrl.closeModal()'></upload-modal>" 
    

    в этом:

    template: "<upload-modal on-close='$ctrl.closeModal'></upload-modal>" 
    

    Это также поможет, если вы будете выкладываю контроллер, чтобы узнать, правильно ли вы вызываете эту функцию. Должно быть что-то вроде этого

    if ($ctrl.closeModal && angular.isFunction($ctrl.closeModal()) { 
        $ctrl.closeModal()(anyValueYouWantToPass); 
    } 
    

    PS

    UI-самозагрузки модальности уже возвращает lifecycle callbacks as promises, метод open возвращает модальный объект, один из его свойств является

    закрыт (тип : обещание) - разрешается, когда модаль закрывается и анимация завершается.

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