Могу ли я установить this.'something 'службы внутри вложенного объекта, который динамически создается в этой службе? (возможно проблемы с областью)
У меня есть следующий сервис (на самом деле он имеет больше уровней и элементов, но я урезал его до единственного примера того, что я хотел бы работать). Он создает объекты javascript внутри других объектов динамически на основе файлов csv в папке app.data. Наиболее актуальная строка для этого вопроса:this.images = images;
после самого внутреннего для цикла.
app.service('tabInfoService',function(csvService, tabsService ){
var tabData = tabsService.tabData;
var tabCount = tabsService.tabCount;
this.tabs={};
this.images={};
var tCounter = 0;
//for loop creates a big object literal with more object literals inside of it
for (tCounter=0; tCounter<tabCount; tCounter++){
var tabImageURL = "Contents/Product Groups/"+tabData[tCounter]+"/imageOrder.csv";
var TabImages = $.getCsvArray(tabImageURL); //gets array from csv file
var images={};
this.tabs["tab"+tCounter] ={
title: tabData[tCounter],
images : (function(){
for (imageCounter = 0; imageCounter<TabImages.length; imageCounter++)
images["image"+imageCounter] ={
image: "Contents/Product Groups/"+tabData[tCounter]+"/img/"+TabImages[imageCounter]
};
this.images=images; //can I make something like this so that I'll have access in my controller?
return images;
})(),
}
}
});
Как я могу сделать что-то вродеthis.images = images;
работать внутри вложенных объектов JavaScript, чтобы я мог получить доступ к этому объекту изображений в моем контроллере с чем-то вроде$scope.images = tabInfoService.images
?
В настоящее время я могу сделать$scope.navItems = tabInfoService.tabs
в моем контроллере и иметь доступ к большому объекту в целом. Это позволяет мне вкладыватьng-repeat
divs (повторяя что-то в navItems, а затем что-то еще внутри этого чего-либо), чтобы повторить все элементы этогоimages
объект.
В общем, я могу получить доступ кtabInfoService.tabs
Объект и копаться в нем, чтобы получить изображения, которые я хочу, вложив ng-повторов в HTML. Приложение прекрасно с этим работает, но у меня возникают проблемы при инициализации данных в контроллере. Могу ли я установить новыйthis.something
(в этом случаеthis.images
) заtabInfoService
чтобы я мог установить переменную $ scope?
Короче говоря: я хочу сделать$scope.initialImage=tabInfoService.images[image0]
но я не могу установитьtabInfoService.images
внутри вложенного объекта в моем сервисе. Есть ли способ сделать это?
Должен ли я перенести все это на контроллер?
Большое спасибо за уделенное время. Я очень ценю это.