我在表中使用ng-repeat
來顯示項目及其價格列表。強制ng-repeat重新運行數據綁定中的函數
- 價格綁定到
itemPrice(item)
,在我的控制器中定義。 - 該功能根據
$scope.orderType
計算價格。 orderType
綁定到HTML中的select
。
訂單類型更改時強制更新所有價格的最佳方法是什麼?
HTML
<select ng-model="orderType" ng-options="name for name in orderTypes"></select>
<!-- ... -->
<tr ng-repeat="item in items">
<td>{{ item.name }}</td>
<td><input type="checkbox" ng-model="item.is_used"></td>
<td><input type="number" ng-model="item.quantity" min="0" max="100"></td>
<td>{{ itemPrice(item) | currency:"$" }}</td>
<td>{{ itemPrice(item) * item.quantity | currency:"$" }}</td>
</tr>
的JavaScript
.controller('OrderCtrl', ['$scope', '$http', function($scope, $http) {
// Set up order types
$scope.orderTypes = ['Buy Back', 'Sale'];
$scope.orderType = $scope.orderTypes[1];
// ...
// Get the price of an item
$scope.itemPrice = function(item) {
if ($scope.orderType === 0) {
return item.price_buy_back;
} else if (item.is_used) {
return item.price_used;
} else {
return item.price_new;
}
}
// ...
}]);
將'ng-change'事件添加到您的選擇中,這將運行$ digest循環,並且您的'ng-repeat'將重新綁定到'items'(儘管它應該已經更新,因爲您有一個「模型」 '綁定它......) – tymeJV
我添加了一個'ng-change',它調用一個函數來將'$ scope.orderType'記錄到控制檯。當價格變化時它會記錄正確的訂單類型,但價格仍然不會更新。 –