例如,home route显示home feed。关于初始控制器初始化&页面重新加载。提要数据在视图中绑定和呈现。
问题:
-
当:
- 任何站点内导航-例如使用
ui-sref('home.feed')
-
功能行为重定向回
state('home.feed')
。即上传PIC功能:- 文件输入后(选择文件/图像)图像预览在添加图片状态
- 添加图片状态具有上传功能。然后重定向到主feed。
- 任何站点内导航-例如使用
function HomeController(currenAuth, feeds) {
var vm = this;
vm.pixData = [];
///// Controller activation
activate();
function activate() {
if (currentAuth) {
getHomeFeed();
}
}
///// Controller methods
function getHomeFeed() {
return feeds.showHomeFeed().then((results) => {
if (results) {
hideNoPostsContainer();
return vm.pixData = results[0];
}
});
}
}
- vm。在视图 的ng-repeat中使用pixData
试图找出最佳实践模式。确保数据的呈现。
我看到的其他要添加的选项有:
- rootscope美元。美元($ statechangesuccess,…
- 路由配置中的resolve属性
研究这个,没有关于它的明确信息。请阅读John Papa的文章:route-resolve-and-controller-activate-in-angularjs在那篇文章中,它提到在我正在使用的控制器中使用resolve或激活模式。但没有建议两者都用。
使用resolve属性似乎是确定的方法。
使用模式从这个toddmotto.com/resolve-promises-in-angular-routes/它似乎没有一个顺利的工作到目前为止,,但什么时候你想使用承诺代码直接在控制器?
不知道为什么你永远不想使用resolve属性?
路由器配置代码
.state('home.feed', {
url: '',
views: {
content: {
templateUrl: 'app/spaPages/home.html',
controller: 'HomeController',
controllerAs: 'hc',
resolve: {
'currentAuth': ['$firebaseAuth', ($firebaseAuth) => {
return $firebaseAuth().$waitForSignIn();
}],
'_pixData': ['feeds', (feeds) => {
return feeds.showHomeFeed().then((results) => {
if (results) {
console.log('called from router resolve');
return results[0];
}
});
}]
}
}
}
})
控制器代码.controller('HomeController', HomeController);
function HomeController(currenAuth, _pixData) {
var vm = this;
vm.pixData = _pixData;
}
关于无法在路由更改时呈现承诺数据的原始问题的答案
此时可视为回答。
使用resolve属性可以工作。
但是仍然想知道对于承诺解析和干净的角化开发来说,最佳模式是什么或者最佳实践模式。也许他以后会再提这个问题。