HTML(查看侧):

<select ng-model="selectedValue" ng-change="updateSelectedValue(selectedValue)">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
</select>


控制器端:

$scope.availValue = product.qty //It's dynamic, getting updated on an API call

$scope.updateSelectedValue = function(currentSelectedValue) {
    if(currentSelectedValue > $scope.availValue) {
      //write code such that if this condition is true than do not let the user click/select options whose value is greater than $scope.availValue, i.e. disable those options
      //just display all options but do not let the user click/select   those options whose value is exceeding $scope.availValue
    }
};


例:

     $scope.selectedValue = 7;

     $scope.availVal = 4;


预期输出:显示所有10个选项,但不允许用户单击/选择值大于4的选项。

最佳答案

您可以尝试如下操作:



var app = angular.module("Demo", []);

app.controller("AppController", function($scope) {
  $scope.ddlValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  $scope.availVal = 4;
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="Demo">
  <div ng-controller="AppController">
    <input type="text" ng-model="availVal" />
    <br/><br/>
    <select ng-model="selectedValue">
      <option value="">--Select--</option>
      <option ng-repeat="val in ddlValues" ng-value="val" ng-disabled="val > availVal">{{ val }}</option>
    </select>
  </div>
</div>





JsFiddle:https://jsfiddle.net/sktajbir/6fmvsaf0/15/

这里发生的是,它正在监视availVal并禁用了那些超过availVal的选项。希望这会帮助您实现目标。谢谢。

10-08 06:53
查看更多