可以在ui router中$stateprovider中的状态视图部分内使用resolve或任何东西将特定数据传递给angularjs的控制器

可以在ui router中$stateprovider中的状态视图部分内使用resolve或任何东西将特定数据传递给angularjs的控制器,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我需要将特定的数据输入到控制器中,该控制器位于ui路由器$stateProvider状态的视图部分中 state('main', { abstract: true url: "/main" controller: 'MainController' templateUrl: "main.html" }) .state('main.state1', { url: "", views: { 'view1': { res

我需要将特定的数据输入到控制器中,该控制器位于ui路由器$stateProvider状态的视图部分中

state('main', {
      abstract: true
      url: "/main"
      controller: 'MainController'
      templateUrl: "main.html"
    })
.state('main.state1', {
  url: "",
  views: {
    'view1': {
      resolve: function() {
        return {
          configuration: "widget1"
        };
      },
      templateUrl: "sample1.html",
      controller: 'Controller1'
    },
    'view2': {
      resolve: function() {
        return {
          configuration: "widget2"
        };
      },
      templateUrl: "sample2.html",
      controller: 'Controller2'
    },
    'view3': {
      resolve: function() {
        return {
          configuration: "widget3"
        };
      },
      templateUrl: "sample3.html",
      controller: 'Controller3'
    },
    'view4': {
      resolve: function() {
        return {
          configuration: "widget4"
        };
      },
      templateUrl: "sampl4.html",
      controller: 'Controller4'
    }
  }
});
现在我的问题是,这个代码是否适用于给出以下结果

  • 上面的controller1将配置的值获取为widget1
  • 上面的controller2将配置的值获取为widget2
  • 上面的controller3将配置的值获取为widget3
  • 上面的controller4将配置的值获取为widget4
  • 如果这是不可能的,那么如何将值传递给各个控制器

    我的main.html文件如下所示

    <div class="main-column">
      <div class="detail-container">
        <h2>{{pageTitle | translate}}</h2>
      </div>
    
      <div class="grid grid-flex">
        <div autoscroll="false"  ui-view="view1"></div>
        <div autoscroll="false"  ui-view="view2"></div>
        <div autoscroll="false"  ui-view="view3"></div>
        <div autoscroll="false"  ui-view="view4"></div>
      </div>
    </div>
    
    
    {{pageTitle | translate}}
    
    如果您只需要传递数据,不需要解析,请执行以下操作

    .state('state1', {
        url: 'url',
        templateUrl: 'views/misc/profile.html',
        controller: 'profileController',
        data: {
           configuration: 'widget'
        }
     });
    
    如果你需要解决,那么试试这个

    state('state1', {
      url: "url.html",
      views: {
        'view1': {
          resolve: {
            configuration: function() {
                return "widget1";
            }
          },
          templateUrl: "sample1.html",
          controller: 'Controller1'
        },
        'view2': {
          resolve: {
            configuration: function() {
                return "widget2";
            }
          },
          templateUrl: "sample2.html",
          controller: 'Controller2'
        },
        'view3': {
          resolve: {
            configuration: function() {
                return "widget3";
            }
          },
          templateUrl: "sample3.html",
          controller: 'Controller3'
        },
        'view4': {
          resolve: {
            configuration: function() {
                return "widget4";
            }
          },
          templateUrl: "sampl4.html",
          controller: 'Controller4'
        }
      }
    });
    

    我不确定resolve是否可以在视图级别工作。我以为是在州一级。我们最初尝试了使用数据,但似乎不起作用。无论如何,非常感谢,我将给出一个trydata,它不在视图级别工作。这是在同一html文件上有多个视图的情况。我希望在“视图”部分下,将不同的值传递给处于相同状态的不同控制器。我已更新问题,以使问题更清晰。resolve关键字必须是相对于状态而不是视图的(如果使用多个视图)。如果要在实例化子级之前等待承诺被解析,则必须将解析密钥注入子级状态。好的,谢谢您的回复。您在控制器中使用$scope.xx=$state.current.views.viewA.data获取数据的又一个小查询。有没有可能在不知道“viewA”的情况下获取数据的值?我的意思是,因为我们正在编写一个通用控制器,控制器应该如何知道它们在哪个视图中并获取数据