加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:15:42 所属栏目:安全 来源:网络整理
导读:我有这样的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; },}; }).
我有这样的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,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读