使用 AngularJS 将所​​选值绑定到多选 ListboxFor 控件

Posted

技术标签:

【中文标题】使用 AngularJS 将所​​选值绑定到多选 ListboxFor 控件【英文标题】:Bind selected value to Multi Select ListboxFor control using AngularJS 【发布时间】:2018-10-14 00:23:13 【问题描述】:

我在以下情况下遇到问题,谁能指导我。

场景: 从已经用户输入的数据库中获取逗号分隔的 ID,然后拆分值,然后在编辑模式下将值绑定到多选列表框控件。

我尝试了以下代码来实现它,但它不适合我。

@html.ListBoxFor(c => c.ClientDemographicHospitalId, new MultiSelectList(Model.Hospitals, "Value", "Text"), new  ng_model = "hospitalDropdownList", @class = "HospitalListbox", style = "width:65%" )

var lstSelectedIDs = employee.ClientDemographicHospitalId;
var arySelectedID = lstSelectedIDs.split(",");

for (var i = 0; i <= arySelectedID.length; i++) 
    $scope.hospitalDropdownList.append($('<option></option>').val(arySelectedID[i].Value).html(arySelectedID[i].Text));

附上截图。

代码:

控制:

【问题讨论】:

为什么要混合使用 jquery 和 AngularJS?这是一个不好的做法 【参考方案1】:

鉴于您的输入格式为1,2,3,4,5,那么您可以拆分输入并使用ng-options 指令填充&lt;select&gt;&lt;options&gt;。请注意,您选择的选项进入selectedOption,并且ng-model 必须与ng-options 一起使用。

附带说明:不要永远将 AngularJS 与 jQuery 混合使用。我听说过 $ 在 jQuery 和 AngularJS 之间混淆的情况。在没有 jQuery 的情况下,一切都可以在 AngularJS 中完成。 (如下所示)

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

var MyController = function($scope) 
  $scope.text = "";
  $scope.selectedOption;

  $scope.populateDropDown = function() 
    $scope.allIds = $scope.text.split(",");
  

app.controller(MyController, "[$scope, MyController]");
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="MyModule" ng-controller="MyController">
<input id="ids" type="text" ng-model="text" placeholder="1,2,3,4,5"/>
<select id="list" ng-model="selectedOption" ng-options="x for x in allIds">

</select>

<button ng-click="populateDropDown()">Populate</button>
</div>

【讨论】:

以上是关于使用 AngularJS 将所​​选值绑定到多选 ListboxFor 控件的主要内容,如果未能解决你的问题,请参考以下文章

当我在 Angularjs 中绑定来自响应的数据时,引导多选不起作用

位运算,处理前台多选值

VueJS中的多个多选值作为一个对象?

在表中插入记录时将所选值作为城市下拉列表的空值

在 sql 语句中引用 ListBox 多选值

移动到多选列表框的位置