Posso definir isso. Algo de um serviço dentro de um objeto aninhado que é criado dinamicamente nesse serviço? (talvez questões de escopo)
Eu tenho o seguinte serviço (na verdade, ele tem mais níveis e elementos, mas eu o reduzi a apenas um exemplo do que eu gostaria de trabalhar). Ele cria objetos javascript dentro de outros objetos dinamicamente, com base em arquivos csv na pasta app.data. A linha mais relevante para esta pergunta éthis.images = images;
após o loop for mais interno.
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;
})(),
}
}
});
Como posso fazer algo comothis.images = images;
trabalhar dentro dos objetos javascript aninhados para que eu possa acessar esse objeto de imagens no meu controlador com algo como$scope.images = tabInfoService.images
?
Atualmente eu posso fazer$scope.navItems = tabInfoService.tabs
no meu controlador e tenha acesso ao objeto grande como um todo. Isso me permite aninharng-repeat
divs (repetindo algo em navItems e, em seguida, somethingElse dentro desse algo) para repetir todos os elementos desteimages
objeto.
Então, basicamente, eu posso acessar otabInfoService.tabs
objeto e cavar nele para obter as imagens que eu quero, aninhando ng-repeats no HTML. O aplicativo funciona bem com isso, mas estou tendo problemas para inicializar os dados no controlador. Posso definir um novothis.something
(nesse casothis.images
) paratabInfoService
para que eu possa definir uma variável $ scope para ele?
Para encurtar a história: eu quero fazer$scope.initialImage=tabInfoService.images[image0]
mas não posso definirtabInfoService.images
dentro do objeto aninhado em meu serviço. Alguma maneira de fazer isso?
Devo mover tudo isso para o controlador?
Muito obrigado pelo seu tempo. Eu realmente gostei disso.