我有一个带有服务的角度程序,它包含当前值的地图(非常像上下文)。在我的程序中的不同位置,我调用该服务来获取某些东西的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
提前致谢
帕斯卡
答案 0 :(得分:0)
经过多次戳戳后,我删除了对代码中较早变量的$ object调用。 Restanglar返回promises,我的理解是在promise上调用$ object将保证其值返回,但事实并非如此。将这些变量保留为承诺似乎有效。不明白为什么 -