解析数据以在 AngularJs 中使用内部组件

Resolving data to use inside components in AngularJs

我有一个应用程序,其中主要数据在主状态下使用 ui-router 解析。然后将此数据存储在 service 中,因此我可以通过 componentcontroller 等访问此数据...

我遇到的问题是在第一次加载期间。由于此数据是通过 $http 请求获取的,当 app 启动时,特别是我的 component,数据尚未准备好,因此 componentundefined 数据但无法正确呈现。

我可以使用 $onChange,但由于我没有绑定数据,而是从 service 获取数据,我不知道如何以正确的方式进行。

例如,假设我需要在index.htmlfooter上填写一些信息,所以我有这样的代码:

index.html

<body>
    [..other elements..]

    <footer></footer>
</body>

footer.component.js

var footer = {
    /* @ngInject*/
    controller: function(storeFactory) {
        this.mainInfo = storeFactory.footerData;
    },
    template: `
        <div class="footer__content">
            {{ $ctrl.mainInfo }}
        </div>
    `
}

angular
    .module(appModule)
    .component('footer', footer);

如果我在component中使用console.logthis.mainInfo是未定义的,但是,如果我设置超时,我可以正确地获取数据。

我知道我可以通过某些方式解决这个问题,例如:

解决这种情况的更好选择是什么?

如果 storeFactory.footerData 未定义 angular 无法监视更改,因为它无法注入自身以绑定文字。但是,如果您分配 storeFactory 对象 angular 有一个对象,它可以在其中注册其双向数据绑定的东西。

var footer = {
    /* @ngInject*/
    controller: function(storeFactory) {
        this.mainInfo = storeFactory;
    },
    template: `
        <div class="footer__content">
            {{ $ctrl.mainInfo.footerData }}
        </div>
    `
}

请告诉我这是否有效,我遇到过无数这样的解决方案。

另一种方法是使用事件或观察者模式在服务中注册您的组件以进行更新。