0
我有一個角色程序,其中包含一個包含當前值(非常像上下文)的映射的服務。在我的程序中的不同位置,我將該服務稱爲獲取某物的當前值。該服務被稱爲CrsViewContext和方法是相當簡單當作爲參數傳遞給函數時,Javascript變量變爲undefined
.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
在此先感謝
帕斯卡爾
不知道這是否是問題,但它是一種代碼氣味,「currentInstances」是全球性的。爲什麼不用「this.currentInstances」替換「currentInstances」並在控制器對象的構造函數中初始化? –
這不是全球性的。它是在一個單例服務中定義的。我的理解是,它不能從服務外部獲得,而不是添加到這個 –
的變量或函數啊,從代碼片段中不清楚是否存在圍繞代碼摘錄的函數。 –