Имам някои проблеми да разбера защо обещанието ми не се изпълнява по начина, по който бих очаквал. Използвам Ionic/ui-routing.
моята услуга:
return {
all: function () {
$localForage.getItem('foo').then(function (bar) {
return bar;
});
}
};
Когато регистрирам данни в конзолата, виждам обектите, които localForage връща от indexeddb.
моите apps.js:
.state('tab.foo', {
url: '/foo',
views: {
'tab-foo': {
templateUrl: 'templates/tab-foo.html',
controller: 'fooCtrl as foo'
}
},
resolve: {
getData: function (Service) {
return Service.all();
}
}
})
В моя контролер foo:
this.foo = getData;
Когато направя това, foo в контролера е недефиниран, някакви идеи защо? Когато влизам в конзолата, виждам, че услугата се извиква от apps.js, виждам, че е разрешена, защото виждам данните в конзолата. Използвайки ui-router, бих очаквал, че няма да зареди изгледа/контролера, докато всичко не бъде разрешено.
Използвах следното като вдъхновение, само без услугата $q. http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx