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