我正在使用Angular 1.4.1。 我做了一個指令,一個帶有縮略圖和鏈接的通用卡片。該鏈接是一個通用的絕對網址,但通常會導致應用程序內的某個地方。AngularJS-href在數據準備好之前重定向到相同的域導致頁面顯示
因此,假如我在https://stackoverflow.com/section/有可能是帶有鏈接的卡片狀https://stackoverflow.com/section/detail
我有一個app.js類似這樣(我只是張貼了有關路段)
.state('base.section', {
url: 'section/',
views: {
'@': {
templateUrl: 'views/section.html',
controller: 'SectionController'
}
},
resolve: {
'items': function (SomeService) {
console.log("items resolve triggered");
return SomeService.doThingsReturnPromise();
}
}
}
.state('base.section.detail', {
url: 'detail',
views: {
'@': {
templateUrl: 'views/detail.html',
controller: 'DetailController'
}
},
resolve: {
'items': function (items) {
return items;
},
'stuff': function(SomeOtherService) {
console.log("stuff resolve triggered.");
return SomeOtherService.doThingsReturnPromise();
}
}
}
所以問題是,當我點擊
<a ng-href="https://stackoverflow.com/section/detail">
我得到正確重定向到詳細信息頁面,但在解決了之前的承諾已完全解決,我得到所有的角像顯示的變量({{somethingLikeThis}})。
即使解決方案被觸發(我可以在控制檯中看到日誌),似乎只是Angular在加載控制器之前不會等到解析完成,因爲它應該表現正常。
當然,如果我重新加載詳細信息頁面,我會得到所有的值完全加載。如果我移動到另一個網站部分(https://stackoverflow.com/baloons),也是如此。
這個問題似乎是,當我從「節」,以「細節」移動到剛剛發生,從相同的運行應用程序
希望能提供了一個很好的問題,解釋
UPDATE
我解決了這個問題,但爲了更好地理解我想指定服務功能。他們是這樣的
angular.module('myApp')
.factory('SomeService',
function ($resource, serverURL, protocol, requestFormat) {
return $resource(serverURL + 'backendUrl/',
{
callback: 'JSON_CALLBACK',
format: requestFormat
},
{
doThingsReturnPromise: {
method: protocol,
isArray: true
}
});
});
只是爲了完整性,原來,這個問題即使使用$ q.all(承諾)的決心