在Angular.js中,如何在点击时使用ng-repeat迭代对象列表中修改元素的属性?
In Angular.js, how do I modify the properties of an element in a list of objects iterated over with ng-repeat on click?
在我的控制器中,我有一个对象数组(我刚刚开始,如果这是非常幼稚的,请原谅我):
$scope.links = [
{
'votes': 6,
'voted_on': false
},
{
'votes': 7,
'voted_on': false
}
];
我想在视图中列出这些,并在单击时修改一些属性,保持一些复杂的状态,以反映DOM中的变化:
<ul>
<li ng-repeat="link for links">
<a ng-click="updateProperties()">Vote</a>
{{link.votes}}
</li>
</ul>
你知道,我想让updateProperties()
管理很多有状态的逻辑(改变{{link.votes}}
的颜色,增加link.votes
,如果他们已经投票,不允许增加,等等)。我知道我需要在$scope
上定义函数,但我只是不确定那会是什么样子,所以帮助会非常感激。谢谢。
一种方法是让updateProperties
具有一个参数,该参数是与投票相关的民意调查的唯一标识符。处理点击所做的事情的逻辑将驻留在updateProperties
中,这将由您根据自己的需要来定义。该函数只是一个标准的javascript函数,可以在控制器中定义,如
$scope.updateProperties = function(pollID){...}
,只要它所在的控制器在您调用它的页面部分处于活动状态,那么您就可以使用该函数。
在主页上查看Angular文档和它们的模型(我认为主页上的一个可能对你有用)。
一种更简单的方法是使用$index来查找条目,例如
<ul>
<li ng-repeat="link for links">
<a ng-click="toggleVotedOn($index)">Vote</a>
{{link.votes}}
</li>
在控制器中,
$scope.toggleVotedOn = function(i) {
$scope.links[i].voted_on = !($scope.links[i].voted_on);
}
相关文章:
- 如何使用json将对象列表从java转换为javascript
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- 如何从类关系中检索对象列表
- 从Javascript动态构建JSON对象列表
- 如何在JSP中对对象列表进行排序
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- 无法将对象列表从视图模型设置为 javascript 变量
- 如何将对象插入对象列表的开头,当它有 unshift 不是函数错误
- 下划线,将对象列表转换为对象值数组
- 以有效的方式搜索对象列表 mongo
- 如何将对象列表传递到MVC4中的控制器方法
- 为什么更改对象列表中的类名会将iten从列表中删除
- 遍历对象列表
- 将JSON对象列表传递给操作
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们
- 从jQuery数组或元素的对象列表中选择第N个项目
- 将jsp对象列表分配给javascript数组
- Javascript:将对象列表转换为关联数组