如何更改<选择>使用angularJS从控制器获得的值

How to change a <select> value from controller using angularJS?

本文关键字:控制器 使用 lt 何更改 选择 gt angularJS      更新时间:2023-09-26

我有一个选择元素,有1-10个选项,如:

<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.selected_size.qty_available

当我尝试选择其他选项时,我想做的是,如果与此新选项对应的值大于可用数量,则更新并显示上次选择的选项,即所选选项值小于可用数量的选项:

$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
    }
}

示例:如果可用数量=4;以前选择的产品数量=2;当前选择的产品数量=8

我得到的当前o/p:仍然8显示在选择html标签中

预期:显示以前选择的产品数量,即显示2

记住控制器中的旧值(我将其放入乘积变量中)。

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;
    }
};

Plnkr 中的示例