我有以下服务(它实际上有更多级别和元素,但我将其精简为我想要工作的一个示例)。它根据 app.data 文件夹中的 csv 文件动态地在其他对象中创建 javascript 对象。与这个问题最相关的行是this.images = images;
在最里面的 for 循环之后。
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
div(重复导航项中的某些内容,然后重复该内容中的其他内容)以便重复此内容的所有元素images
object.
所以基本上,我可以访问tabInfoService.tabs
对象并深入研究它以通过在 HTML 中嵌套 ng-repeats 来获取我想要的图像。该应用程序可以正常工作,但我在初始化控制器中的数据时遇到问题。我可以设置一个新的吗this.something
(在这种情况下this.images
) for tabInfoService
所以我可以为其设置一个 $scope 变量?
长话短说:
我想要做$scope.initialImage=tabInfoService.images[image0]
但我无法设置tabInfoService.images
在我的服务的嵌套对象内。有办法做到这一点吗?
我应该将这一切移至控制器吗?
非常感谢您的宝贵时间。对此,我真的非常感激。
您需要制作该对象的深层副本。一种选择是使用angular.copy https://docs.angularjs.org/api/ng/function/angular.copy.
angular.copy(images, this.images);
示例 plnkr http://plnkr.co/edit/1RubZT8hn1WVgaC5ZfQI?p=preview- 参见第 36 行和第 37 行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)