在 angularjs 中的 select 框更改时动态更新跨度内部 html
Update span inner html dynamically on select box change in angularjs
我在一个页面上有多个 select 框,每个 select 框都有一个列出其价格的跨度。在 select 框中,根据项目动态更改价格更新。我如何使用 angularjs 实现此目的?
下面是我的代码
<div ng-repeat="items in itemsList" class="col-md-3 col-sm-3 ">
<div class="product product-category">
<div class="details">
<img src="resources/images/itemImages/{{items.image}}" style="width:159;height:159;" class="image" />
<h4 class="name">{{items.name}}<span class="quality">(Quality)</span></h4>
<h4 class="info">{{items.description}}</h4>
<select id="unit{{items.id}}" ng-init="itemUnitsSelected = items.itemUnitPrices[0]" ng-model="itemUnitsSelected" ng-change="changedValue(itemUnitsSelected, '{{items.id}}')" data-ng-options="XYZ as XYZ.unit.name for XYZ in items.itemUnitPrices track by XYZ.id " class="form-control item-count">
</select>
</div>
<div class="cart-feature">
<h5 class="price">
<span class="rate original"></span>
<span class="rate discounted" price="{{items.itemUnitPrices[0].itemPrice}}" id="discountedAmount{{items.id}}">Rs. {{items.itemUnitPrices[0].itemPrice}}</span>
</h5>
<div class="cart-option">
<span class="tag">Qty </span>
<span class="quantity">
<input type="text" value="1" id="qty{{items.id}}" class="form-control" />
</span>
<a href="javascript:return;" class="event" ng-click="addItemToCart(items.id,items.name)">
<span class="cart-btn"></span>
</a>
</div>
</div>
</div>
</div>
目前在我的控制器上,我正在通过 javascript 更新值,我想使用 angularjs 更改和绑定它。
$scope.changedValue=function(item,itemId){
document.getElementById("discountedAmount"+itemId).innerHTML = "Rs. "+item.itemPrice;
document.getElementById("discountedAmount"+itemId).setAttribute("price", item.itemPrice);
};
itemUnitsSelected
应该通过将 ng-model
转换为 item.itemUnitsSelected
来绑定到 ng-repeat
的每个项目。您使用的 ng-change
指令不应该 {{}}
里面插值
<select id="unit{{items.id}}"
ng-init="item.itemUnitsSelected = items.itemUnitPrices[0]"
ng-model="itemUnitsSelected"
ng-change="changedValue(itemUnitsSelected, item.id)"
data-ng-options="XYZ as XYZ.unit.name for XYZ in items.itemUnitPrices track by XYZ.id "
class="form-control item-count">
</select>
Don't do DOM manipulation from controller, its consider as BAD
practice.
您也可以去掉 ng-change 事件,您只需要更正您的 span 标签,将 span 标签中的 items
重命名为 item
。
<span class="rate discounted"
price="{{item.itemUnitPrices[0].itemPrice}}"
id="discountedAmount{{item.id}}">
Rs. {{item.itemUnitPrices[0].itemPrice}}
</span>
我在一个页面上有多个 select 框,每个 select 框都有一个列出其价格的跨度。在 select 框中,根据项目动态更改价格更新。我如何使用 angularjs 实现此目的?
下面是我的代码
<div ng-repeat="items in itemsList" class="col-md-3 col-sm-3 ">
<div class="product product-category">
<div class="details">
<img src="resources/images/itemImages/{{items.image}}" style="width:159;height:159;" class="image" />
<h4 class="name">{{items.name}}<span class="quality">(Quality)</span></h4>
<h4 class="info">{{items.description}}</h4>
<select id="unit{{items.id}}" ng-init="itemUnitsSelected = items.itemUnitPrices[0]" ng-model="itemUnitsSelected" ng-change="changedValue(itemUnitsSelected, '{{items.id}}')" data-ng-options="XYZ as XYZ.unit.name for XYZ in items.itemUnitPrices track by XYZ.id " class="form-control item-count">
</select>
</div>
<div class="cart-feature">
<h5 class="price">
<span class="rate original"></span>
<span class="rate discounted" price="{{items.itemUnitPrices[0].itemPrice}}" id="discountedAmount{{items.id}}">Rs. {{items.itemUnitPrices[0].itemPrice}}</span>
</h5>
<div class="cart-option">
<span class="tag">Qty </span>
<span class="quantity">
<input type="text" value="1" id="qty{{items.id}}" class="form-control" />
</span>
<a href="javascript:return;" class="event" ng-click="addItemToCart(items.id,items.name)">
<span class="cart-btn"></span>
</a>
</div>
</div>
</div>
</div>
目前在我的控制器上,我正在通过 javascript 更新值,我想使用 angularjs 更改和绑定它。
$scope.changedValue=function(item,itemId){
document.getElementById("discountedAmount"+itemId).innerHTML = "Rs. "+item.itemPrice;
document.getElementById("discountedAmount"+itemId).setAttribute("price", item.itemPrice);
};
itemUnitsSelected
应该通过将 ng-model
转换为 item.itemUnitsSelected
来绑定到 ng-repeat
的每个项目。您使用的 ng-change
指令不应该 {{}}
里面插值
<select id="unit{{items.id}}"
ng-init="item.itemUnitsSelected = items.itemUnitPrices[0]"
ng-model="itemUnitsSelected"
ng-change="changedValue(itemUnitsSelected, item.id)"
data-ng-options="XYZ as XYZ.unit.name for XYZ in items.itemUnitPrices track by XYZ.id "
class="form-control item-count">
</select>
Don't do DOM manipulation from controller, its consider as BAD practice.
您也可以去掉 ng-change 事件,您只需要更正您的 span 标签,将 span 标签中的 items
重命名为 item
。
<span class="rate discounted"
price="{{item.itemUnitPrices[0].itemPrice}}"
id="discountedAmount{{item.id}}">
Rs. {{item.itemUnitPrices[0].itemPrice}}
</span>