我已经尽一切努力让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,我想动态化,我不知道参数类型到底是什么。