我已经使用ng-options选择了一个带有多个选项的选择列表。我正在如下使用它:

<select ng-options="c as c.Text for c in ReceiverList track by c.Value" ng-model="ReceiverUserID" class="form-control" id="ddlReceiverUserID" ng-change="GetWorkers(ReceiverUserID, SenderUserID,'receiver')">
   <option value="">--Select Supervisor--</option>
</select>       <!-- Parent Drop Down-->

<select multiple ng-options="c as c.Text group by c.Group
        for c in receiveList track by c.Value" ng-model="Workers"
        class="form-control" id="ddlWorkers" size="10">
</select>           <!-- Child Drop Down -->


当我从另一个下拉菜单中选择某项时,此选择下拉菜单将被填充。(这是一种级联下拉菜单)。像下面这样填充:

$scope.GetWorkers = function (objA, objB, ddlType) {
  $http.post("user/Workers/", { userID: objA.Value })
      .success(function (data, status, headers, config) {
          if (ddlType == 'sender') {
              $scope.sendList = data;
          } else {
              $scope.receiveList = data;
              $('#ddlWorkers optgroup[label="Current Users"] option').prop('disabled', true); // Not working
          }
      })
      .error(function (data, status, headers, config) {
          showToast(ToastType.error, "Error occured while fetching workers.", "Failure");
      });
 }


我想禁用子下拉列表的特定组项目。所以我尝试了下面的代码,但它不起作用:

$('#ddlWorkers optgroup[label="Current Users"] option').prop('disabled', true);


我不知道如何在select的数据更改或加载新数据时禁用select的特定组项目。

这是我要禁用所有optgroup [label =“ Current Users”]成员的HTML输出:

<select multiple="" ng-options="c as c.Text group by c.Group for c in receiveList track by c.Value" ng-model="Workers" class="form-control ng-pristine ng-valid" id="ddlWorkers" size="10">
    <optgroup label="Current Users">
        <option value="4118">Kevins Numen</option>
        <option value="4119">ggdfg fdgdfg</option>
    </optgroup>
    <optgroup label="New Users">
        <option value="1093">Case Worker</option>
    </optgroup>
</select>

最佳答案

我对angularjs或ng-options知之甚少,但似乎其他所有人都使用了一些超时时间,以使该过程将接收到的数据填充到输入中,并且您可以尝试其他方法:

...
} else {
    $scope.receiveList = data;
    setTimeout(function(){
        $('#ddlWorkers optgroup[label="Current Users"] option')
          .prop('disabled', true); // Not working
    }, 100);
}
...


也许不太相似,但是很高兴在这里看看:

is there a post render callback for Angular JS directive?

07-24 17:40
查看更多