使用Angular UI路由器基于状态参数的负载控制器

回来

我正在尝试基于stateparam加载控制器以使其可重用

.state("dashboard.item.detail", {
    url: "/detailId/:detailId/detailName/:detailName",
    views: {
       'main@': {
            templateUrl: function ($stateParams){
                //move this to a util function later
                var tempName = unescape($stateParams.detailName);
                tempName = tempName.replace(/\s/g, "-");
                return '../partials/slides/' + tempName + '.html';
            },
            resolve: {
                DetailData: ['DetailService', function(DetailService){
                    return DetailService.getDetails();
                }]
            },
            controller: function ($stateParams) {
                console.log( $stateParams.detailName + 'Ctrl');
                return $stateParams.detailName + 'Ctrl';
            }
        }
      }
})

控制器

    .controller('NemtCtrl', ['$scope', '$rootScope', 'DetailData', function ($scope, $rootScope, detailData) {
    console.log(detailData);
}]);

如果我删除该功能并仅使用该控制器,它将正常工作(控制台将记录detailData)

controller: 'NemtCtrl'

但是如果我这样做将无法正常工作:

controller: function ($stateParams) {
    return 'NemtCtrl';
}

我在这里做错了什么?有一个更好的方法吗?

鲈鱼

这里发生的是当您编写此代码时:

controller: 'NemtCtrl'

您告诉angular获取名为“ NemtCtrl”的控制器。但是,另一方面,您可以这样写:

controller: 
   function ($stateParams) {
        return 'NemtCtrl';
   }

您正在为该状态定义一个控制器。

更新

根据ui-router文档,该方法如下:

$stateProvider.state('contacts', {
  template: ...,
  controllerProvider: function($stateParams) {
      var ctrlName = $stateParams.type + "Controller";
      return ctrlName;
  }
})

您可以在此处了解更多信息

更新2

对于您的情况,它将类似于:

.state("dashboard.item.detail", {
  url: "/detailId/:detailId/detailName/:detailName",
  views: {

    'main@': {
      templateUrl:
        function ($stateParams){
          //move this to a util function later
          var tempName = unescape($stateParams.detailName);
          tempName = tempName.replace(/\s/g, "-");

          return '../partials/slides/' + tempName + '.html';
        },
      resolve: {
        DetailData: ['DetailService',
          function(DetailService){
            return DetailService.getDetails();
          }]
      },
      controllerProvider: //Change to controllerProvider instead of controller
        function ($stateParams) {
          //console.log( $stateParams.detailName + 'Ctrl');
          return $stateParams.detailName + 'Ctrl';
        }
    }

  }

})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用参数更改状态后防止ui路由器状态控制器重新加载

来自分类Dev

Angular UI Router-在子状态下共享控制器时为父状态重置状态参数

来自分类Dev

Angular UI路由器,如何从控制器获取当前状态的祖先列表?

来自分类Dev

Angular中的UI路由器子状态未加载控制器

来自分类Dev

Angular UI路由器-使用参数“无法解析状态”

来自分类Dev

Angular ui路由器可选查询参数两次加载控制器

来自分类Dev

使用相同的控制器在子状态之间传递状态参数

来自分类Dev

AngularJS:控制器使用UI路由器更改状态时多次注册

来自分类Dev

如何使用Angular UI路由器设置默认状态

来自分类Dev

使用Angular UI路由器嵌套状态

来自分类Dev

Angular Ui路由器无法访问我控制器内的$ stateParams

来自分类Dev

Angular ui路由器控制器-语法不起作用

来自分类Dev

Angular UI路由器未加载控制器或模板

来自分类Dev

Angular Ui路由器无法访问我的控制器内的$ stateParams

来自分类Dev

Angular ui路由器的动态参数

来自分类Dev

从Angular Dart控制器访问路由器

来自分类Dev

AngularJS-UI路由器-无法使用resolve向我的控制器提供数据

来自分类Dev

使用UI路由器解析并传递给组件的控制器

来自分类Dev

无法使用UI路由器和“ controller as”语法访问视图中的控制器属性

来自分类Dev

当使用$ templateCache拉入视图时,UI路由器控制器不起作用吗?

来自分类Dev

使用AngularUI路由器动态加载控制器

来自分类Dev

无法获取ui路由器状态参数

来自分类Dev

ui路由器deferIntercept和状态参数

来自分类Dev

无法获取ui路由器状态参数

来自分类Dev

AngularJS-UI路由-如何在控制器中使用路由状态作为变量?

来自分类Dev

使用角度和ui路由器在深层状态中保留/传递参数

来自分类Dev

AngularJS angular ui路由器-将自定义数据传递给控制器

来自分类Dev

从Angular UI路由器中的数组对象创建状态

来自分类Dev

Angular ui路由器-在状态之间共享视图

Related 相关文章

  1. 1

    使用参数更改状态后防止ui路由器状态控制器重新加载

  2. 2

    Angular UI Router-在子状态下共享控制器时为父状态重置状态参数

  3. 3

    Angular UI路由器,如何从控制器获取当前状态的祖先列表?

  4. 4

    Angular中的UI路由器子状态未加载控制器

  5. 5

    Angular UI路由器-使用参数“无法解析状态”

  6. 6

    Angular ui路由器可选查询参数两次加载控制器

  7. 7

    使用相同的控制器在子状态之间传递状态参数

  8. 8

    AngularJS:控制器使用UI路由器更改状态时多次注册

  9. 9

    如何使用Angular UI路由器设置默认状态

  10. 10

    使用Angular UI路由器嵌套状态

  11. 11

    Angular Ui路由器无法访问我控制器内的$ stateParams

  12. 12

    Angular ui路由器控制器-语法不起作用

  13. 13

    Angular UI路由器未加载控制器或模板

  14. 14

    Angular Ui路由器无法访问我的控制器内的$ stateParams

  15. 15

    Angular ui路由器的动态参数

  16. 16

    从Angular Dart控制器访问路由器

  17. 17

    AngularJS-UI路由器-无法使用resolve向我的控制器提供数据

  18. 18

    使用UI路由器解析并传递给组件的控制器

  19. 19

    无法使用UI路由器和“ controller as”语法访问视图中的控制器属性

  20. 20

    当使用$ templateCache拉入视图时,UI路由器控制器不起作用吗?

  21. 21

    使用AngularUI路由器动态加载控制器

  22. 22

    无法获取ui路由器状态参数

  23. 23

    ui路由器deferIntercept和状态参数

  24. 24

    无法获取ui路由器状态参数

  25. 25

    AngularJS-UI路由-如何在控制器中使用路由状态作为变量?

  26. 26

    使用角度和ui路由器在深层状态中保留/传递参数

  27. 27

    AngularJS angular ui路由器-将自定义数据传递给控制器

  28. 28

    从Angular UI路由器中的数组对象创建状态

  29. 29

    Angular ui路由器-在状态之间共享视图

热门标签

归档