Angularjs 角度组件/控制器解析$stateprovider
我试图适应Angular的组件(来自Angular Fullstack Generator生成的代码)。 我尝试按照以下方式配置路由以解决“查询”:Angularjs 角度组件/控制器解析$stateprovider,angularjs,controller,components,resolve,Angularjs,Controller,Components,Resolve,我试图适应Angular的组件(来自Angular Fullstack Generator生成的代码)。 我尝试按照以下方式配置路由以解决“查询”: angular.module('paizaApp') .config(function($stateProvider) { $stateProvider .state('main', { url: '/', template: '<main query="$resolve.query"><
angular.module('paizaApp')
.config(function($stateProvider) {
$stateProvider
.state('main', {
url: '/',
template: '<main query="$resolve.query"></main>',
resolve:{
query:function(){return null;}
},
.state('starred',{
url:'/users/:userId/starred',
template: '<main query="$resolve.query"></main>',
resolve:{
query:function($stateParams){
return {stars:$stateParams.userId};
}
}
})
.state('users',{
url:'/users/:userId',
template: '<main query="$resolve.query"></main>',
resolve:{
query:function($stateParams){
return {user:$stateParams.userId}
}
}
我收到一条错误消息-未知查询提供程序。但是,如果我从构造函数中删除查询,那么错误消息是“查询未定义”。
你能看看我哪里出错了吗?我是否应该把“query”变量注入控制器?我不熟悉Angular 1,更不用说Angular 2了
更新:我也尝试过类似的方法,但没有成功:
angular.module('paizaApp')
.config(function($stateProvider) {
$stateProvider
.state('main', {
url: '/',
template: '<main></main>',
resolve:{
query:function(){return null;}
},
controller:function($scope,query){
$scope.query=query
}
您不应该在控制器
构造函数
上注入查询
。如果已将MyController指定为状态的控制器,则可以执行此操作
查询
解析已在组件绑定
中传递。您可以直接获取query
的值,在中解析。query
您不应该在controller构造函数上注入query
。如果已将MyController指定为状态的控制器,则可以执行此操作
查询
解析已在组件绑定
中传递。您可以直接获取query
resolve inthis.query
的值。我将控制器函数中的所有查询引用都更改为this.query,它工作了。谢谢我说得太快了。错误消息已消失,但this.query返回未定义的。我仍然需要找出已解析查询的值是如何进入控制器的function@AAllen正如我所看到的,该值应该是null
,对吗?它应该返回null而不是undefined。我还将其他路径添加到上面的代码中,这些路径应该返回值……我在控制器函数中更改了对this.query的所有查询引用,结果成功了。谢谢我说得太快了。错误消息已消失,但this.query返回未定义的。我仍然需要找出已解析查询的值是如何进入控制器的function@AAllen正如我所看到的,该值应该是null
,对吗?它应该返回null而不是undefined。我还有其他路径,我正在添加到上面的代码中,它们应该返回值。。。
angular.module('paizaApp')
.config(function($stateProvider) {
$stateProvider
.state('main', {
url: '/',
template: '<main></main>',
resolve:{
query:function(){return null;}
},
controller:function($scope,query){
$scope.query=query
}
angular.module('paizaApp')
.component('main', {
templateUrl: 'app/main/main.html',
controller: MainController,
scope:{query:'='}
});