2016-05-27 5 views
1

私は共通の確認モーダルサービスを既に作成し、別のモーダルで作成 - ユーザを作成しています。ユーザコントローラを作成し、私は確認モーダル

vm.onModalCancel = function onModalCancel() { 
     return ConfirmationModalService.openModal({ 
       modalTitle: vm.resourceIdFor.cancelThisUpload 
      }) 
      .then(function (modalResponse) { 
       if (modalResponse.isConfirmed()) { 
        $modalInstance.dismiss('cancel'); 
        return; 
       } 
       return; 
      }); 
    }; 

のキャンセルをユーザーがクリックすると今私は、ユーザーが/新を使用する場合stateproviderルートからモーダルを開くしようとしていたときに、ユーザーのモーダルを作成閉じるためonModalCancelの下の呼び出しで$ modalInstanceProvider < mo.pages.shared.modals.NewUserModalController - - $ modalInstance <:不明プロバイダを -

(function() { 
'use strict'; 

angular 
    .module('mo.pages.new-user.layouts', ['ui.router', 'ui.bootstrap']) 
    .config(['$stateProvider', newUserRouteConfiguration]); 

function newUserRouteConfiguration($stateProvider, $modalInstance) { 
    $stateProvider 
     .state('new-user', { 
      url: '/new-user/{objectType:int}/{objectId:int}', 
      templateUrl: 'modules/pages/shared/modals/new-user/new-user-modal.html', 
      controller: 'mo.pages.shared.modals.NewUserModalController as vm',    
      windowClass: 'new-user-modal', 
      resolve: { 
       headerText: function() { 
        return 'header'; 
       } 
      } 
     }); 
}})(); 

問題は、私が直面しています以下のように-user URLは、私はエラーを取得するということです。 私は、NewUserModalControllerに$ modalInstanceの依存関係があり、$ modalInstanceを渡して解決しようとしましたが、まだこのエラーが発生しています! NewUserModalControllerのdefinationは以下の通りです:

(function() { 
'use strict'; 

angular 
    .module('mo.pages.shared.modals') 
    .controller('mo.pages.shared.modals.NewUserModalController', NewUserModalController); 

NewUserModalController.$inject = [ 
    'headerText', '$window', '$q', '$modalInstance', 'mo.common.ConfirmationModalService' 
]; 

function NewUserModalController(headerText, $window, $q, $modalInstance, ConfirmationModalService) { 

/* Logic */ 

}})(); 

私が直接$ modal.openを使用して、テンプレートを渡して、コントローラからモーダルを開くしようとした場合、モーダルは、問題なく開きます。それは次にあなたが注入

に問題
+0

'NewUserModalController'の定義コードを表示してください。$ modalInstanceプロバイダを忘れているかもしれません。 –

+0

@RonBrogan私はすでに 'NewUserModalController'の定義に_ $ modalInstance_を追加しました。私は上記の質問をコントローラの定義で編集しました。 – user1722043

+0

あなたはどのバージョンのui-bootstrapを使用していますか?彼らは最近、uibを使ってプレフィックスを付けるように変更しました。それは何が起こっているのでしょうか? $ uibModalInstanceになります。そうでない場合、あなたの問題を示すplunkr(または同様のもの)を作成できますか? –

答えて

0

を使用してモーダルを開こうとすると

.config(['$stateProvider','$modalInstance', newUserRouteConfiguration]); 

または

.config(newUserRouteConfiguration); 

を入力してください問題を与えていますこの問題を解決しました。NewUserModalServiceモーダルのため、$ modalInstを削除しました。 NewUserModalControllerからANCE依存性NewUserModalService依存し、代わりにRouteConfigurationにtemplateUrlコントローラを使用するのを追加し、私はフォーカス取得時の機能を使用します。参照:[https://github.com/angular-ui/ui-router/wiki/][1]Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state NewUserModalService

(function() { 

'use strict'; 

angular 
    .module('mo.pages.shared.services') 
    .factory('mo.pages.shared.services.NewUserModalService', newUserModalServiceFactory); 

newUserModalServiceFactory.$inject = [ 
    '$modal' 
]; 
function newUserModalServiceFactory($modal) { 
    var modalInstance; 
    var service = { 
     shownewUserModal: shownewUserModal 
    }; 

    return service; 

    function dismissNewUserModal() { 
     try { 
      if (!modalInstance) { 
       return; 
      } 
      modalInstance.close(); 
      $modal.close(); 
     } catch (e) { 
     } 
    } 

    function showNewUserModal(headerText) { 
     modalInstance = $modal.open({ 
      templateUrl: 'modules/pages/shared/modals/new-user/new-user-modal.html', 
      controller: 'mo.pages.shared.modals.NewUserModalController as vm', 
      windowClass: windowClass, 
      backdrop: 'static', 
      size: 'lg', 
      resolve: { 
       dismissFn: function() { 
        return dismissNewUserModal; 
       }, 
       headerText: function() { 
        return headerText; 
       } 
      } 
     }); 

     return modalInstance; 
    } 

} 

})();

+0

こんにちは、私はそれをしようとすると、(私はすでに試していた最初のステップは、エラーの原因_Failedのためにモジュールをインスタンス化する: エラー:[$ injector:modulerr]モジュールmo.pages.new-userをインスタンス化できませんでした: エラー:[$ injector:modulerr]モジュールmo.pages.new-userのインスタンス化に失敗しました。次の理由によるレイアウト エラー:[$ injector:unpr]不明なプロバイダ:$ modalInstance_ – user1722043

関連する問題