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服务是单身人士.他们是真正的单身人士吗? 关于我的模块的更多细节: 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, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |