2016-05-18 62 views
2

我有1-10選項爲選擇元素:如何使用angularJS更改控制器的值<select>?

<select id="selVal" ng-model="product.quantity" ng-options="o as o for o in quantityValues" ng-change="updateDelta(product.quantity, {{product.quantity}}, product.selected_size.qty_avail)"></select> 

而在控制器側的樣子:

$scope.quantityValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

先決條件:最初product.quantity < product.selected_size.qty_avail

我想要做什麼,當我嘗試選擇其他選項,如果相應的這個新選項的值大於可用數量比更新和顯示上次選擇的選項,即一個whe重新選擇的選項值小於可用數量:

$scope.updateDelta = function(currentSelectedVal, prevSelectedVal, selectedProductAvailQty) { 

    if(product.quantity > selectedProductAvailQty) { 

    //than 

    #scope.product.quantity = prevSelectedVal;//still in product.quantity in view previous value is not displayed 

    } 
} 

示例:if available_quantity = 4;先前選擇的產品數量= 2;當前選擇的產品的數量= 8

當前O/PI正在逐漸:仍然8顯示在所選擇的HTML標籤

預期:顯示先前選擇的產品的數量,即顯示器2

回答

0

記住在控制器的舊值(我把它放到產品變量中)。

HTML:

<select ng-model="ctrl.product.quantity" ng-change="ctrl.updateDelta(ctrl.product.quantity)" ng-options="o as o for o in ctrl.quantityValues"></select> 

控制器:

vm.product = { 
    quantity: 4, 
    qty_avail: 6, 
    prevSelected: this.quantity 
}; 

vm.updateDelta = function(newVal) { 
    if (newVal > vm.product.qty_avail) { 
     vm.product.quantity = vm.product.prevSelected; 
    } 
    else 
    { 
    vm.product.prevSelected = newVal; 
    } 
}; 

Example in Plnkr

相關問題