Javascript 承诺数据在路由状态更改时不呈现-UI路由器

Javascript 承诺数据在路由状态更改时不呈现-UI路由器,javascript,angularjs,firebase,firebase-authentication,Javascript,Angularjs,Firebase,Firebase Authentication,例如,home route显示home提要。在初始控制器初始化和页面重新加载时。提要数据在视图中绑定和呈现 问题: 在以下情况下,数据不会在视图中呈现: 任何站点内导航-例如使用ui-sref'home.feed' 特性行为重定向回状态“home.feed”。i、 e.上传图片功能: 文件输入后,选择“添加图片”状态下的文件/图像预览 添加图片状态具有上传功能。然后重定向回主提要。 控制器代码 function HomeController(currenAuth, feeds) { va

例如,home route显示home提要。在初始控制器初始化和页面重新加载时。提要数据在视图中绑定和呈现

问题:

在以下情况下,数据不会在视图中呈现:

任何站点内导航-例如使用ui-sref'home.feed' 特性行为重定向回状态“home.feed”。i、 e.上传图片功能:

文件输入后,选择“添加图片”状态下的文件/图像预览 添加图片状态具有上传功能。然后重定向回主提要。 控制器代码

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];
            }
        });
    }

}
.controller('HomeController', HomeController);

function HomeController(currenAuth, _pixData) {
    var vm = this;
    vm.pixData = _pixData;
}
vm.pixData用于视图中的ng repeat 试图找出最佳实践模式。以确保数据的呈现

在我看来,要添加的其他选项包括:

$rootscope.$on'$statechangesuccess'。。。 在路由配置中解析属性 对此进行研究,目前还没有确切的信息。读约翰·帕帕的一篇文章。在那篇文章中,它提到在我使用的控制器中使用解析或激活模式。但没有建议两者都使用

更新

使用resolve属性似乎是最终的解决方法

使用此模式,到目前为止似乎工作顺利,但何时您希望在控制器中直接使用承诺代码

不确定为什么您永远不想使用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];
                                    }
                                });
                            }]
                        }
                    }
                }
            })
控制器代码

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];
            }
        });
    }

}
.controller('HomeController', HomeController);

function HomeController(currenAuth, _pixData) {
    var vm = this;
    vm.pixData = _pixData;
}

就无法提供有关路由更改的承诺数据这一原始问题而言,答案是肯定的

在这一点上可以认为是答案

使用resolve属性是可行的


但是仍然想知道什么是承诺解析和干净角度开发的最佳模式或最佳实践模式。可能是以后再回答这个问题。

关于无法提供路线变更承诺数据的原始问题的答案

在这一点上可以认为是答案

使用resolve属性是可行的


但是仍然想知道什么是承诺解析和干净角度开发的最佳模式或最佳实践模式。可能稍后将回答此问题。

显示源代码。showHomeFeed以及正在发送的数据结构。需要看看这个函数是什么returns@charlietfl谢谢该函数返回一个数据数组-典型的ng repeat数据。返回的数据在我看来不是问题所在。想保持问题的清晰性。对我来说,问题是一个角度的模式,我可以带走和使用一致。刚刚使用了todd格言文章中的这种模式,即使在我提到我遇到问题的场景中,它似乎也能始终如一地工作。更正/澄清~从上面“对我来说,这个问题是一个角度的模式,我可以拿走并持续使用”对其进行阐述。这在所有场景中都会呈现,即导航到视图和/或类似上载视图的功能使用state.gowell重定向到提要视图,只要请求成功,它将基于解析。您还必须考虑错误处理……因为当解决方案因任何理由而被拒绝时,我本能的担心是污染或必须对解决方案中的代码那样的控制器进行正确的处理。我想这是我的全部预订,现在仍然有。但在这一点上,我不确定另一种模式是否有效。奇怪的是,它没有被更多地谈论。可能我缺少feed.showHomeFeed的某些显示代码以及正在发送的数据结构。需要看看这个函数是什么returns@charlietfl谢谢该函数返回一个数据数组-典型的ng repeat数据。返回的数据在我看来不是问题所在。想保持问题的清晰性。对我来说,问题是一个角度的模式,我可以带走和使用一致。刚刚使用了todd格言文章中的这种模式,即使在我提到我遇到问题的场景中,它似乎也能始终如一地工作。更正/澄清~从上面“对我来说,这个问题是一个角度的模式,我可以拿走并持续使用”对其进行阐述。这在所有场景中都会呈现,即导航到视图和/或类似上载视图的功能使用state.gowell重定向到提要视图,只要请求成功,它将基于解析。您还必须考虑错误处理……因为当解决方案因任何理由而被拒绝时,我本能的担心是污染或必须对解决方案中的代码那样的控制器进行正确的处理。我想这是我的全部预订,现在仍然有。但在这一点上,我不确定另一种模式是否有效。奇怪的是,它没有被更多地谈论。也许我错过了什么