我有一些问题,弄清楚为什么我的承诺没有解决我期望的方式 . 我正在使用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
1 回答
有一个working example . 因为控制器可以作为foo使用,我们应该这样做:
控制器分配到某些 property
myData
模板调用将包含controller(foo)及其属性myData
检查一下here