0
我正在转向我的angular 1.x应用程序中的无状态组件。在ui路由器中传递stateParams
我从控制器代码中移除了所有数据加载,并且我使用了ui-router
的resolve
功能。由于我在同一个$state
中使用$state
转换处理每个内部状态更改,因此我不想从后端获取所有数据,只有在需要时才需要(我需要不同的数据)。
为了获得这种行为,我非常依赖params。例如:
...
.state('myapp.child', {
url: '/child',
controller: function ($state, foo, bar) {
function someEvent() {
// Provision $stateParams to prevent fetching
$state.go($state.current, {foo: foo, bar:bar});
}
},
params: {
foo: null,
bar: null
},
resolve: {
/**
* @ngInject
*/
foo: function(fooService, $stateParams) {
if ($stateParams.foo !== null) { // <= Duplication
return foo;
} else {
return fooService.get();
}
},
/**
* @ngInject
*/
bar: function(barService, $stateParams) {
if ($stateParams.bar !== null) { // <= Duplication
return bar;
} else {
return barService.get();
}
}
}
});
我的问题是:有没有什么办法可以直接告诉路由器解决这些值?还是有一个很好的方法来避免在解析块中进行空检查?
我在某些地方使用此功能,但行数往往会变得太长。我正在寻找的是一种自动解析'bar'的方法。或者把'$ state.go'中的那个对象作为一个分辨率而不是$ stateParams。 – fodma1
如果你想先解决,然后将其作为$ stateParams在$ state.go中传递,那么你就错过了ui-router的要点。决议是在那里做的。线条变得“太长”似乎更多的是审美方面,而不是功能性编程方面。 – rrd