1

我有一个局部变量对象服务与活动名称:如何在AngularJS中访问服务中的对象属性?

myApp.service('appService', ['$rootScope', function ($rootScope) { 

     var events = { 
      firstEvent: "MyFirstEvent", 
      secondEvent: "MySecondEvent" 
     }; 

     this.doEvent = function(eventName) 
     {   
      // do something... 
     }; 


    }]); 

现在我想读events.firstEvent一个控制器内:

myApp.controller('myController', ['$scope', 'appervice', function ($scope, appService) { 

var mydata = appService.events.firstEvent; 

}]); 

我得到的问题在控制台中的这个错误:

TypeError: Cannot read property 'firstEvent' of undefined 

我在做什么错了吗?

P.S. 我也无法访问函数doEvent()。

回答

1

你的服务返回这个,但你没有放任何东西!

myApp.service('appService', ['$rootScope', function ($rootScope) { 
    var events = { 
     firstEvent: "MyFirstEvent", 
     secondEvent: "MySecondEvent" 
    }; 
    return { events:events}; 
}]); 

这将返回obeject在它的活动!

+0

什么如果我加入该服务的内部功能。看看编辑的问题。我如何访问该功能? – 2014-09-30 11:59:59

+0

明白了我认为:return {events:events,doEvent:this.doEvent}; – 2014-09-30 12:05:57

+0

@AvivM,没错! – 2014-09-30 12:14:33

0

Angular在加载它时执行服务函数,你需要从这个函数返回你需要的。

myApp.service('appService', ['$rootScope', function ($rootScope) { 

    var events = { 
     firstEvent: "MyFirstEvent", 
     secondEvent: "MySecondEvent" 
    }; 

    return events; 

}]); 

myApp.controller('myController', ['$scope', 'appervice', function ($scope, appService) { 

     var mydata = appService.firstEvent; 

}]); 
0

你可以写

function MyService($rootScope){ 
    var _this = {}; 

    _this.events = { 
     firstEvent: 'blabla1', 
     secondEvent: 'blabla2' 
    }; 
    return _this; 
} 

myApp.service('appService', ['$rootScope', MyService]); 

,之后

myApp.controller('myController', ['$scope', 'appService', function ($scope, appService) { 

    var mydata = appService.events.firstEvent; 

}]);