我的代码是这样的:
$stateProvider
.state('results', {
url: '/results?a&b&c',
controller($stateParams, $state) {
'ngInject';
console.log($stateParams);
console.log($state.params);
},
template: '<div>Hello world</div>'
});
..当我传入localhost:8888/results?a=10&b=20c=30
时,查询字符串将从网址中删除。并且$state.go('results', {a:10, b:20, c:30}
也不起作用。将params从查询字符串参数更改为url参数也不起作用。这里有一些愚蠢的错误,我无法压制!
我已尝试从express更改为连接服务器,但没有更改。那么有没有人经历过这个,你是如何解决它的?
我目前的连接设置如下:
const connect = require('gulp-connect');
const history = require('connect-history-api-fallback');
gulp.task( 'serve', function () {
connect.server( {
root: conf.dest,
port: conf.port,
middleware: function( connect, options ) {
return [ history() ];
}
} );
} );
修改
当我console.log
$state.go
之前的参数时,信息是正确的,当我从console.log
的控制器$stateParams
results
时,我得到{{} 1}}。
EDIT2:
我试过这个也无济于事。
{ a: undefined, b: undefined, c: undefined }
在来自州的控制器中:
$stateProvider
.state('results', {
url: '/results/:a/:b/:c',
controller($stateParams, $state) {
'ngInject';
console.log($stateParams);
console.log($state.params);
},
template: '<div>Hello world</div>'
})
UPDATE3:
我创建了另一个州class OptionsController {
constructor($state) {
this.$state = $state;
}
// ...
submit() {
console.log(this.options()); // prints the correct info
this.$state.go('results', this.options());
}
}
。那状态看起来像这样:
test
当我输入$stateProvider
.state('test', {
url: '/x/:y',
controller($stateParams) {
'ngInject';
console.log(JSON.stringify($stateParams));
}
})
时,我会立即重定向到http://localhost:8888/x/10
。这太奇怪了!
答案 0 :(得分:0)
$stateProvider
.state('results', {
url: '/results?:a&:b&:c',
controller($stateParams, $state) {
'ngInject';
console.log($stateParams);
console.log($state.params);
},
template: '<div>Hello world</div>',
params : {
a : null,
b : null,
c : null
}
});
更像这样的东西。
答案 1 :(得分:0)
好。找到了解决方案。这是因为一个指令拦截ui路由器就像这个$scope.$on('$stateChangeStart', performAnimation);
一样动画。
稍后在代码中我使用$state.go(toState.name)
并忘记添加参数。
愚蠢的错误,就像所有愚蠢的错误一样!所以指出:检查你是否在任何地方拦截'$ stateChangeStart'!:)