我正在使用AngularJS,用戶可以通過點擊下面的HTML中的+來將產品添加到他/她的訂單中。之後,productname和id被添加到數組中,並且這可以工作。但是在將數據添加到數組後,應該更新被點擊的列表項的鏈接。 +應該變成用戶訂單中該產品的數量。所以如果他點擊那個產品1次+應該更新爲1.如果他點擊那個產品2次+應該更新到2等。現在我想我可以完成這個:document.getElementById。但他更新了錯誤的列表項。每個第一個列表項被更新的時間,而不是一個被點擊...AngularJS ng-click:更改被點擊的列表項的值
HTML
<ons-list>
<ons-list-item style="height:60px" ng-repeat="product in products | filter:search | orderBy: 'category'">
<ul style="display:inline; text-decoration:none; list-style-type:none;">
<li style="width: 35px; height:53px; float:left; padding:7px 0 0 5px; font-size:30px; color:gray; font-weight:thin; border-right:1px solid #ddd;"><a href="#" id="aantal" style="padding-top:10px;" ng-click="productAdd(product.name, product.id)">+</a></li>
<li style="width:65%; float:left; padding-left:15px;">
<ons-col width="100%" style="float:left; border-right:1px solid #F7F7F7;">
<div class="name" style="height:20px; margin:0; padding:0 0 0 20px; font-size:16px; ">
{{product.name}}
</div>
<div class="desc" style="padding:0 0 0 20px; font-size:11px; position:absolute; top:20px;">
{{product.description}}
</div>
</ons-col></li>
</ul>
</ons-list-item>
</ons-list>
AngularJS
$scope.productAdd = function(pname, pid) {
$scope.prodname = pname;
$scope.prodid = pid;
if($scope.order.length > 0){
for(var b = 0; b<$scope.order.length;b++)
{
if($scope.order[b].prodid == pid)
{
$scope.order[b].aantal += 1;
$scope.aantal = $scope.order[b].aantal;
}
else
{
$scope.order.push({prodid: $scope.prodid, prodname: $scope.prodname, aantal: 1});
$scope.aantal = $scope.order[b].aantal;
}
}
}
if($scope.order.length == 0){
$scope.order.push({prodid: $scope.prodid, prodname: $scope.prodname, aantal: 1});
document.getElementById('aantal').innerHTML = '1';
}
}
我如何更新正確的鏈接列表項目,被點擊的項目?
沒關係,解決它使用:$ event.currentTarget – Sesamzaad
你可能會考慮不同的方法。你不應該在控制器中操縱你的DOM。查看Controller文檔:https://docs.angularjs.org/guide/controller。 @ joshua-kelly是正確的,DOM更改屬於指令。 – jme11