2016-07-22 8 views
1

に私はAungarJSにおける単一ページアプリはui.routerを使用して作られていると私は、このリンクから私のアプリでブートストラップモーダルを統合したい:は、単一ページAngularJSアプリ

http://angular-ui.github.io/bootstrap/#/getting_started

しかし、これまでのところ、私の統合ひどく失敗しました。 UIルータの場合は$uibResolve.setResolver('$resolve')に設定する必要があるというリンクがあるためです。しかし、$uibResolveを使用すると注入エラーが発生します。

私の質問:私のシングルページアプリケーションで前述のリンクにBootsrap Modalsをどのように統合できますか?

+0

あなたは事前1.0 UI-ルータのバージョンを使用していますか? UIルータの** 1.0より前の**解決メカニズムを使用してモーダル解決をしたい場合は、アプリケーションの構成フェーズで$ uibResolve.setResolver( '$ resolve')を呼び出すことができます。 –

+0

は明らかにそうではありません。より高いバージョンでこの作業を行うにはどうすればよいですか? –

+0

わかりませんが、推測しなければならないのであれば、そのステップを行う必要はありません。おそらく、箱の外で動作する –

答えて

0

あなたは$uibResolveProviderを注入し、$uibResolveProvider.setResolver('$resolve')

https://docs.angularjs.org/guide/providers

を呼び出す必要があります。**サービスオブジェクトは、設定の段階では使用できませんが、プロバイダインスタンスは、(上記のunicornLauncherProviderの例を参照)です。

0

短い回答:Configure this using the onEnter property of the state config to open a modal when you transition to that state

どのバージョンの角度、ui-bootstrap、およびui-routerを使用しているのかは不明ですが、デモ用にスニペットを作成しました。古いバージョンのものを使用していない限り、あなたの状況に適応できるはずです。

var app = angular.module('uiRouterModal', ['ui.router', 'ui.bootstrap']); 
 

 
app.config(function($stateProvider, $urlRouterProvider){ 
 
    $urlRouterProvider.otherwise("/"); 
 
    $stateProvider 
 
    .state('index', { 
 
    url: '/', 
 
    template: '<h2>Base state</h2>' 
 
    }) 
 
    .state('modal', { 
 
    url: '/modal', 
 
    onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) { 
 
     $uibModal.open({ 
 
     template: [ 
 
     '<div class="modal-content">', 
 
      '<div class="modal-header">', 
 
      '<h3 class="modal-title">Modal state</h3>', 
 
      '</div>', 
 
      '<div class="modal-body">', 
 
      'I did it!', 
 
      '</div>', 
 
      '<div class="modal-footer">', 
 
      '<button class="btn btn-primary" ng-click="dismiss()">OK</button>', 
 
      '</div>', 
 
     '</div>' 
 
     ].join(''), 
 
     resolve: {}, // can resolve any data and pass to controller 
 
     controller: function($uibModalInstance, $scope){ 
 
      $scope.dismiss = function() { 
 
      $uibModalInstance.dismiss(); 
 
      }; 
 
     } 
 
     }); 
 
    }] 
 
    }); 
 
});
<!DOCTYPE html> 
 
<html ng-app="uiRouterModal"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>UI-Router and UI-Bootstrap Modal</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script> 
 
    <script data-require="[email protected]" data-semver="0.3.1" src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.js"></script> 
 
    
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/1.1.0/ui-bootstrap-tpls.js"></script> 
 
    <script src="script.js"></script> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" /> 
 
    </head> 
 

 
    <body> 
 
    <ui-view></ui-view> 
 
    <a ui-sref="modal">Click for modal</a> 
 
    </body> 
 

 
</html>

関連する問題