当作为函数的参数传递时,Javascript变量变为未定义

时间:2014-06-21 02:36:36

标签: javascript angularjs

我有一个带有服务的角度程序,它包含当前值的地图(非常像上下文)。在我的程序中的不同位置,我调用该服务来获取某些东西的currentValue。该服务称为CrsViewContext,方法非常简单

.service('CrsViewContext', function () {
    var currentInstances = {};

    this.setCurrent = function (domain, instance) {
        currentInstances[domain] = instance;
        console.log('ViewContext setCurrent: ' + domain);
        console.dir(instance);
    };

    this.getCurrent = function (domain) {
        console.log('ViewContext getCurrent: ' + domain);
        console.dir(currentInstances[domain]);
        return currentInstances[domain];
    };

    this.resetCurrent = function (domain) {
        console.log('ViewContext resetCurrent: ' + domain);
        currentInstances[domain] = null;
    };
});

在我的控制器中,我将此CrsViewContext作为参数传递并执行类似的操作

.controller('MyCtrl', function (CrsViewContext) {
   var n = CrsViewContext.getCurrent ('RealEstate');
   console.log ("get current Real estate");
   console.dir (n);
   console.log ("current real estate id: "+n.id);
 });

然而,最后一个日志未定义,即使在我的控制台中我可以看到先前的语句返回一个定义id及其值的对象

与Javascript和/或Restangular有关,因为我使用Restangular来检索该对象。另外,如果从控制台访问它,请注意,获取ID

没有问题
   n=$('#wrapper').injector().get('CrsViewContext').getCurrent('RealEstate').id;

从控制台返回3

提前致谢

帕斯卡

1 个答案:

答案 0 :(得分:0)

经过多次戳戳后,我删除了对代码中较早变量的$ object调用。 Restanglar返回promises,我的理解是在promise上调用$ object将保证其值返回,但事实并非如此。将这些变量保留为承诺似乎有效。不明白为什么 -