Injecting a resolved promise into service

后端 未结 2 1493
囚心锁ツ
囚心锁ツ 2021-02-08 01:29

I need to get some information (a schema) from the server before I set up a bunch of services that depend on that information.

My server provides a schema that defines v

2条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-08 01:48

    What you want is deferred bootstrap. There is already a plugin written for this purpose - https://github.com/philippd/angular-deferred-bootstrap.

    I create an example at plunkr - http://plnkr.co/edit/VfISHNULXRLe52NeAsn1?p=preview

    *You must replace existing ng-app with deferred bootstrap

    Code Snippet -

    angular.element(document).ready(function() {
        deferredBootstrapper.bootstrap({
            element: document.body,
            module: 'plunker',
            resolve: {
                schema: ['$http',
                    function($http) {
                        return $http.get('schema.json');
                    }
                ]
            }
        });
    });
    

    Then, you can use schema anyway in controller, services or factory just like route resolve.

    Sample Code for Factory

    app.factory('SomeService', function(schema){
        return {
            getTitle: function() {
                return schema.title;
            }
        }
    });
    

提交回复
热议问题