我正在NodeJS(服务器部分)和AngularJS(视图部分)上编写一个API,该API要求另一个API(NodeJS也)获得一个包含包含图片数组的对象的对象。我对这个数组中的图片感兴趣。
我编写了一个for循环来获取对象中图片数组中包含的所有图片的名称:
for(j=0; j<reference.pictures.length; j++){
self.url ="http://localhost:3000/api/pictures/"+reference.pictures[j].picture;
self.urlArray = urlArray.push(self.url);
}
console.log(urlArray);
我为我的观点写了一个ng-repeat:
<div ng-repeat="url in urlArray">
<img ng-src="{{url}}" width="150px"/>
<br/>
</div>
我的问题吗?当我console.log时,我可以在日志中看到包含在我的URL数组中的URL,但是在我的ng-repeat视图中看不到它们。我猜我的ng-repeat并不完美,但仍然不知道为什么 有任何想法吗 ?
要了解,我想显示阵列中包含的所有图片,因此首先我这样做了:
控制器:
self.url = "http://localhost:3000/api/pictures/"+reference.pictures[j].picture;
视图:
<div ng-repeat="picture in reference.pictures">
<img ng-src="{{url}}" width="150px"/>
<br/>
</div>
结果是我有很多图片,但是用于获取图片的URL是最后一个被分配退出循环的图片,所以我所有的图片都是相同的(最后一个),这就是为什么我得到用我所有不同的网址制作数组的想法
答案 0 :(得分:0)
我假设您是使用$scope
来引用self
。如果是这样,您的代码的主要问题就是该分配:
self.urlArray = urlArray.push(self.url);
Array#push
返回更新后的数组的长度,因此self.urlArray
将始终包含一个整数。而且,您无法在AngularJS中使用ng-repeat
遍历一个整数。要解决此问题,只需删除任务:
urlArray.push(self.url);
答案 1 :(得分:0)
您缺乏将urlArray
构造为对象文字的数组,即:
[
{ url: 'someUrl' },
{ url: 'anotherUrl' },
...
]
请改为这样做:
self.urlArray = [];
for(j=0; j<reference.pictures.length; j++) {
self.urlArray.push({
url: "http://localhost:3000/api/pictures/"+reference.pictures[j].picture
})
}
...
<div ng-repeat="url in urlArray">
<img ng-src="{{ url.url }}" width="150px">
<br>
</div>
答案 2 :(得分:-1)
Angular中有一些原型继承的细微差别-请查看this post,以获得更深入的解释。
基本上,您的ng-repeat
无法访问所需的urlArray
,因为在childScope
中创建了一个新变量,它使{em>中的相同变量 {1}}。如果您要将parentScope
设置为对象的属性,则应该可以解决您的问题。