模态内的嵌套视图未显示.(ui-router和ui-bootstrap)

Lot*_*re1 3 angularjs angular-ui-bootstrap angular-ui-router

我在创建响应应用程序状态的模式时遇到了问题.从角度ui-router wiki我看到了如何实现我的目标,但我的代码没有工作,我不知道为什么原因如下:

  1. 当应用程序路由器在模态中启动/ sign /时
  2. 我可以在我的控制台上看到以下输出

    => "about.sign"

    => "about.sign.in"

  3. 2)意味着路由器和射击!换句话说,应打开模态about.sign,并将about.sign.in状态模板插入其父模板,更准确地说是在标签上.

我尝试了两种技术.命名为ui-views和匿名但没有效果.

https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state

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

  app.config(function($stateProvider){
    $stateProvider
      .state('about',{
        url: '/',
        views:{
          'main': {
            templateUrl: 'about/about.tpl.html'
          }
        }
      })
      .state('about.sign',{
        url: '',
        onEnter: function($stateParams, $state, $modal){
          console.log('about.sign')
          var modalInstance = $modal.open({
            template:'<h1>Modal</h1><div ui-view="bar-view"></div>',
            size: 'sm',
          });
        }
      })
      .state('about.sign.in',{
        url:'sign/in',
        onEnter: function($stateParams, $state, $modal){
          console.log('about.sign.in')
        },
        views: {
          'bar-view': {
            template: 'Sign in #1'
          }
        }

      })
      .state('about.sign.up',{
        url:'sign/up',
        onEnter: function($stateParams, $state, $modal){
          console.log('about.sign.in')
        },
        views: {
          'bar-view': {
            template: 'Sign up #2'
          }
        }

      })
  }); //end of app.config
Run Code Online (Sandbox Code Playgroud)

我是否对那些嵌套视图做错了?

max*_*sam 8

我也碰到了这个.事实证明你需要使用"父"而不是点符号.

这是掠夺者

angular.module('app', ['ui.router', 'ui.bootstrap'])
  .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
      .state('view', {
        url: '',
        template: '<button class="btn btn-default" ui-sref="modal"> Modal</button> <ui-view />',
        controller: function($scope) {
        }
      })
      .state('modal', {
        //abstract: true,
        parent: 'view',
        url: '/modal',
        onEnter: ['$modal', '$state', function($modal, $state) {
            console.log('Open modal');
            $modal.open({
              template: '<button class="btn btn-danger" ui-sref="signin"> sign-in </button> <button ui-sref="signout" class="btn btn-success"> sign-out </button> <div ui-view="modal"></div>',
              backdrop: false,
              windowClass: 'right fade'
            }).result.finally(function() {
              $state.go('list');
          });
        }]
      })
      .state('signin', {
        url: '/signin',
        parent: 'modal',
        views: {
          'modal@': {
            template: '<p>sign-in</p>'
            }
          }
      })
      .state('signout', {
        url: '/signout',
        parent: 'modal',
        views: {
          'modal@': {
            template: '<p>sign-out</p>'
            }
          }
      })
    }]);
Run Code Online (Sandbox Code Playgroud)

  • 你可以在[这里]找到更多信息(https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#user-content-view-names---relative-vs-absolute-名称),但我认为这是一种特殊情况,仅适用于具有嵌套视图的模态. (2认同)