AngularJs服务返回完整对象,但在尝试访问属性时返回undefined

时间:2014-10-30 04:45:11

标签: angularjs

更新2:

我发现了问题的来源,我遗漏了重要部分。

我在第一个控制器INSIDE中设置属性

$rootScope.$on('anEvent', function (event, data) {
    InjectedService.setToken(data.value);
})

但是我无法从外部那个回调范围中获取它。被监听的事件取决于$ http请求,所以我猜这是问题所在。这有什么变通方法吗?

更新

控制器的顺序是另一种方式,因此secondController中的代码实际上是在我的实际应用程序中首先被调用。我已相应重新排序了

问题:

我正在尝试获取特定于服务的属性但是当我尝试获取服务属性时,我得到了未定义(使用getter函数或不使用)。但是当我尝试获取全部服务时,我会获得具有正确属性和价值的所有内容。

main.js

angular.module('myApp', ['myModule', 'myServices'])
    .controller('firstController', ['InjectedService', function(InjectedService) {

            InjectedService.setProperty('Hello World')

    }])

othermodule.js:

angular.module('myModule', [])
    .controller('secondController', ['InjectedService',
        function (InjectedService) {

            console.log(InjectedService); // Full object with property == 'hello world'
            console.log(InjectedService.property); // I get undefined
            console.log(InjectedService.getProperty()); // I get undefined

            // interesting to note:
            InjectedService.setToken('A different string');
            console.log(InjectedService.property); // I get 'A different string'
            console.log(InjectedService); // Full object with property == 'Hello World' which was set in second controller

        }])

services.js:

angular.module('myServices', function
    .service('InjectedService', function(){
        var Service = this;

        Service.setProperty = function (value) {
            Service.property = value;
        }

        Service.getProperty = function () {
            return Service.property;
        }

        Service.unsetProperty = function () {
            Service.property = null;
        }

        return Service;
    })

在我看来,范围问题,但变量不是原始类型。有什么建议吗?

0 个答案:

没有答案