UI-Router(解决)无法将数据传递到控制器

Posted

技术标签:

【中文标题】UI-Router(解决)无法将数据传递到控制器【英文标题】:UI-Router (resolve) cant pass data into controller 【发布时间】:2017-04-10 19:11:12 【问题描述】:

当我运行这样的代码时,我的控制器停止工作,并且它发生在通过解析传递的各种数据,从 api 或任何其他方式.. 我无法将任何东西传递给我的控制器

> $urlRouterProvider.otherwise('/movies')
>                 $stateProvider
>                         .state('movies', 
>                                 url: '/movies',
>                                 templateUrl: 'templates/movies.html',
>                                 controller: 'indexCtrl',
>                                 resolve: 
>                                         resolveParam: function()
>                                                  return 'sdsadasdasd'
>                                                 
>                                 
>                         )
> 
>         ]);
> 
> 
>         app.controller('indexCtrl', ['$scope', 'resolveParam',              function($scope, resolveParam) 
>                $scope.click = function() 
>                         alert();
> 
> 
> 
>                 
>         ]);

只要我这样运行它就可以正常工作

app.controller('indexCtrl', ['$scope', function($scope) 
           $scope.click = function() 
                    alert();
            
    ]);

即使我的状态仍然和上面一样..

【问题讨论】:

你的 resolve 需要返回一个 promise。 那么它应该像这样pokit.org/get/img/9968e3ce68f6d8e13d7b4c35c66a5b9b.jpg 工作,但它没有 堆栈跟踪是否有错误? 只是前端应用,在 VS Code 中工作 【参考方案1】:

您可能有错字或其他难以追踪的错误。 基于您的代码的 JSfiddle 运行良好。

http://jsfiddle.net/vcx171qa/

JS

angular.module('app', ['ui.router'])
  .config(['$urlRouterProvider', '$stateProvider', function($urlRouterProvider, $stateProvider) 
    $urlRouterProvider.otherwise('/movies')
    $stateProvider
      .state('movies', 
        url: '/movies',
        template: '<div>resolveParam</div>',
        controller: 'indexCtrl',
        resolve: 
          resolveParam: function() 
            return 'sdsadasdasd';
          
        
      )

  ])

.controller('indexCtrl', ['$scope', 'resolveParam', function indexCtrl($scope, resolveParam) 
  $scope.resolveParam = resolveParam;
]);

HTML

<html>
   <head>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.9/angular.js"></script>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.js"></script>
   </head>
   <body ng-app="app" class="ng-scope">
      <ui-view></ui-view>
   </body>
</html>

输出

【讨论】:

嗯,是的,可能没有时间弄清楚,所以我在控制器方法中发出了 http 请求.. 无论如何,谢谢大家

以上是关于UI-Router(解决)无法将数据传递到控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UI-router 将对象传递到状态?

无法从状态“家”解决“___” - 角度 ui-router 问题

UI-Router:如何在切换视图时保留视图

如何将数据传递给嵌套控制器(UIContainerView)?

Angular ui-router - 如何访问从父模板传递的嵌套命名视图中的参数?

将导航控制器添加到视图时无法传递数据