angularjs – Angular服务真的是单身吗?

前端之家收集整理的这篇文章主要介绍了angularjs – Angular服务真的是单身吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的Angular服务:

angular.module('MyModule')
    .factory('SharedData',function( ){
        return {
            session_id: undefined,getSessionId: function () {
                return this.session_id;
            },setSessionId: function (new_id) {
                this.session_id = new_id;
            },};
    }).
    controller( 'MyController',['SharedData',function( SharedData ){
            console.log( "Retrieved session id = " + SharedData.getSessionId()); 
               // getting undefined here!
    }]);

我之前在另一个模块中调用了这个服务,如下所示:

angular.module( 'bootstrapper' )
    factory("AnotherService",function(){
          var injector = angular.injector(['MyModule','ng']),shared_data = injector.get('SharedData');
              shared_data.setSessionId( getUrlParameter('SESSIONID'));
          ...

 });

控制台输出结果未定义.

我认为’MyController’中的SharedData和’AnotherService’中的SharedData不是同一个对象.然而,人们都说Angular服务是单身人士.他们是真正的单身人士吗?

关于我的模块的更多细节:
我使用模块’bootstrapper’手动引导另一个模块’MyModule’:

angular.module( 'bootstrapper' )
    .run(function () {
        angular.bootstrap(document,['MyModule']);
    });

解决方法

您可以在引导时为应用程序提供常量作为模块依赖项.

angular.module( 'bootstrapper' )
    .config(function () {
        var sessionIdProvider = function ($provide) {
             $provide.constant("SESSIONID",getUrlParameter('SESSIONID'));
        };
        angular.bootstrap(document,['MyModule',sessionIDProvider]);
    });

有关更多信息,请参阅AngularJS $provide Service API Reference — constant.

更新

您还可以跳过引导程序应用程序并在MyModule应用程序中使用配置块.

angular.module( 'MyModule' )
    .config(function ($provide) {
        $provide.constant("SESSIONID",getUrlParameter('SESSIONID'));
});

有关更多信息,请参阅AngularJS angular.module API Reference,

猜你在找的Angularjs相关文章