Javascript 在Angular.js中,如何修改使用ng repeat on click迭代的对象列表中元素的属性?

Javascript 在Angular.js中,如何修改使用ng repeat on click迭代的对象列表中元素的属性?,javascript,html,angularjs,Javascript,Html,Angularjs,在我的控制器中,我有一个对象数组(我才刚刚开始,所以请原谅我,如果这是非常幼稚或其他的话): 我想在视图中列出这些属性,并在单击时修改一些属性,以保持反映DOM中更改的一些复杂状态: <ul> <li ng-repeat="link for links"> <a ng-click="updateProperties()">Vote</a> {{link.votes}} </li> <

在我的控制器中,我有一个对象数组(我才刚刚开始,所以请原谅我,如果这是非常幼稚或其他的话):

我想在视图中列出这些属性,并在单击时修改一些属性,以保持反映DOM中更改的一些复杂状态:

<ul>
    <li ng-repeat="link for links">
        <a ng-click="updateProperties()">Vote</a>
        {{link.votes}}
    </li>
</ul>
  • 投票 {{link.voces}

你知道,我希望
updateProperties()
管理大量有状态逻辑(更改
{{link.voces}}
的颜色,递增
link.voces
,如果他们已经投票,则不允许递增,等等)。我知道我需要在
$scope
上定义函数,但我不确定它会是什么样子,因此非常感谢您的帮助。谢谢。

一种方法是让
updateProperties
拥有一个参数,该参数是投票相关的投票的唯一标识符。处理单击操作的逻辑将驻留在
updateProperties
中,这将由您根据需要进行定义。该函数只是一个标准javascript函数,可以在控制器内部定义,如

$scope.updateProperties=function(pollID){…}
只要它所在的控制器在您调用它的页面部分处于活动状态,就可以使用该函数


查看主页上的及其模型(我认为主页上的模型可能对您有用)。

一个更简单的方法是使用$index查找项目,例如

<ul>
<li ng-repeat="link for links">
    <a ng-click="toggleVotedOn($index)">Vote</a>
    {{link.votes}}
</li>

嗯,是的,我想我会采用这种方法,在这里提到的ng重复中使用一个(键,值)序列:我不确定这是否是做事情的最优雅的方式,但它会完成工作,直到我知道更好一点。干杯(键、值)方法可能会很好。我总是发现获取整个对象然后访问我需要的属性更容易。e、 在你的例子中,
“link for links”
Vote{{link.voates}
Hm,我对这个答案有点困惑,因为理想情况下这就是我想要的——在调用函数时,通过将其传递到函数中来更新我当前“打开”的对象的状态。我是否必须为每个对象添加一个
pollID
属性,以及如何在回调函数中使用该属性?我是否需要在数组中循环并找到具有正确的
pollID
的对象?要使这种方法起作用,您需要能够区分轮询和具有某种对所有轮询全局唯一的
pollID
。看看这个很棒的。非常感谢Ryanwells!真正超越了职责的召唤。
<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);
}