当前位置: 首页 > 面试题库 >

路由器解析将不会注入控制器

廉元龙
2023-03-14
问题内容

我已经尽一切努力让ui路由器解析将其值传递给给定的控制器AppCtrl。我正在使用依赖注入$inject,这似乎引起了问题。我想念什么?

路由

$stateProvider.state('app.index', {
  url: '/me',
  templateUrl: '/includes/app/me.jade',
  controller: 'AppCtrl',
  controllerAs: 'vm',
  resolve: {
    auser: ['User', function(User) {
      return User.getUser().then(function(user) {
        return user;
      });
    }],
  }
});

控制者

appControllers.controller('AppCtrl', AppCtrl);

AppCtrl.$inject = ['$scope', '$rootScope'];

function AppCtrl($scope, $rootScope, auser) {
  var vm = this;
  console.log(auser); // undefined

  ...
}

编辑
这是一个小家伙http://plnkr.co/edit/PoCiEnh64hR4XM24aH33?p=preview


问题答案:

在将路由解析参数用作绑定到该路由的控制器中的依赖项注入时,由于名称aname不存在的服务提供程序,因此不能将该控制器与ng-
controller指令一起使用。当路由器在其各自的局部视图中实例化要绑定的控制器时,将注入动态依赖项。

还要记住要$timeout在示例中返回,因为它返回了一个promise,否则您的参数将被解析为没有值,如果您使用的是$http其他服务或其他返回promise的服务,情况也是如此。

  resolve: {
    auser: ['$timeout', function($timeout) {
      return $timeout(function() {
        return {name:'me'}
      }, 1000);
    }],

在控制器中注入resolve依赖项。

appControllers.controller('AppCtrl', AppCtrl);

AppCtrl.$inject = ['$scope', '$rootScope','auser']; //Inject auser here

function AppCtrl($scope, $rootScope, auser) {
  var vm = this;
  vm.user = auser;
}

在视图中而不是ng-controller中,使用ui-view指令:

<div ui-view></div>

演示版



 类似资料:
  • 问题内容: 因此,请考虑我的angularUI路由设置中的以下片段。我导航到路线/ category / manage / 4 / details(例如)。我希望可以在相关的控制器加载之前解决“类别”问题,实际上是可以在我可以从类别服务返回类别的resolve函数中放置一个断点,并查看类别是否已返回的事实。现在在控制器本身内部放置另一个断点,我可以看到“类别”始终是未定义的。它不是由UI路由器注入

  • 英文原文: http://emberjs.com/guides/routing/setting-up-a-controller/ URL的改变同时也可能改变显示的模板。而模板只有当其搭载了需要呈现的信息才有用。 在Ember.js中,模板从控制器中获取需要呈现的信息。 内置的两个控制器Ember.ObjectController和Ember.ArrayController,使控制器可以非常方便的呈

  • 我有两个http调用需要在初始化我的控制器之前重新启动,目前使用Angular UI路由器,我有$stateProvider下的resolve map。状态('stateName',{stateObject})我的状态对象如下 不管怎么说,尽管有了德雷多布。d1作为resolve controll转到$q.all(deferredObj)的(function(){}),这是一个意外的行为,我相信在

  • 问题内容: 我是Node.js和Express的新手,我试图理解这两个似乎是重叠的概念,即路由与控制器。 我看过一些简单的例子,app.js + route / *似乎足以路由所需的各种请求。 但是,我也看到有人在谈论使用控制器,并且有些人暗示使用更正式的MVC模型(???)。 如果有人可以帮助我消除这个谜团,并且如果您有一个在Node.js + Express框架中设置控制器的好例子,那就太好了

  • 我这段代码可以生效,但是有个问题,不是动态化的。 参数类型我得写UserDto.class,我想动态化,我不知道参数类型到底是什么。