如何操纵ng-repeat中的许多元素?

时间:2014-05-01 15:35:59

标签: javascript angularjs

我想通过ng-repeat显示一个数组。但是我在div(带有ng-repeat)里面有很多其他的元素,我想在ng-repeat的每次迭代中操作它们。例如:

<div ng-repeat="data in result">
 {{data.name}} 
     <img src="value">
     <p class="class">text</p>
</div>

如果我想为阵列的每个元素使用不同的源更改图像源,我该怎么做?我无法改变结果数组的任何内容。我想稍后更改它,例如用户在底部clic。

丹尼尔

编辑:

img标签只是一个例子。我添加了其他可能需要更改类的元素。因此每次迭代都有不同的类。

2 个答案:

答案 0 :(得分:2)

要更改图像来源,请使用ng-src,如:

<div ng-repeat="data in result">
 {{data.name}} <img ng-src="{{data.imageUrl}}">
</div>

在此我假设您在每个名为imageUrl的数据项上都有一个属性。

要更改值,只需为imageUrl属性指定一个新值,而角度的双向绑定将执行其余操作。一个例子是:

<button ng-click="result[0].imageUrl = 'img/new-image.jpg';">Change Image</button>

当然,你需要确保你有正确的索引,并且结果数组中至少有一个元素,但是应该这样做!

直播示例

要查看此操作,请查看以下plunker:http://plnkr.co/edit/gYLH7Z4b03lS2gZBHceC?p=preview

修改

根据问题的编辑 - 如果您需要更改班级,请使用ng-class。实际上,已经有一个指令已经针对您需要更改的大多数常见事项编写。始终首先搜索角度文档:angularjs.org。如果您确实需要做一些尚未编写的更高级的内容,请阅读文档并创建自己的指令:https://docs.angularjs.org/guide/directive。祝你好运!

答案 1 :(得分:1)

使用ng-src代替src进行字符串插值。请参阅https://docs.angularjs.org/api/ng/directive/ngSrc