例如,家庭路线显示家庭饲料。在初始控制器初始化&在页面上重新加载。 Feed数据在视图中绑定和渲染。
问题:
在以下情况下,数据无法在视图中呈现:
ui-sref('home.feed')
重定向回state('home.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];
}
});
}
}
试图找出最佳实践模式。确保呈现数据。
我看到的其他添加选项是:
研究这个问题,没有确切的信息。阅读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;
}
答案 0 :(得分:0)
关于无法在路线更改中呈现承诺数据的原始问题的答案
此时可以考虑回答。
使用resolve属性有效。
但仍然想知道最佳模式是什么,或者是最佳实践模式,以实现承诺解决和清晰角度开发。可能会在以后安排这个问题。