如何在AngularJs中获取select2值
我无法获取select2的值。 这是我的代码:如何在AngularJs中获取select2值,angularjs,jquery-select2,angularjs-select2,Angularjs,Jquery Select2,Angularjs Select2,我无法获取select2的值。 这是我的代码: <select id="categoryId" class="category" ng-model="selectedCategory" ng-options="selectedCategories.name for selectedCategories in categories"
<select id="categoryId" class="category"
ng-model="selectedCategory"
ng-options="selectedCategories.name for selectedCategories in categories"
ng-change="selectedCategory()">
<option></option>
</select>
对于4.0.0之前的Select2版本,建议删除Select2并使用(非),这是Select2的AngularJS本机版本。Select2 4.0.0可与AngularJS配合使用(尽可能多),因此不再严格需要使用ui select 这里的问题是DOM
change
事件(由Select2触发)与您正在收听的AngularJSchange
事件不同。只要ng model
的值发生更改,就会触发AngularJSchange
事件,在您的情况下,这可能不是您所期望的
您的ng型号
中不包含点(
),这意味着Angular将无法轻松地听到更改,并且可能永远无法检测到更改。因此,这是一个很容易修复的解释,解释了为什么ng更改
处理程序可能不会被触发
另一个原因可能是Select2在摘要循环中被破坏了一半,这将使Select2的DOM在页面中处于碎片状态,但事件处理程序不一定能按预期工作。如果下拉列表没有打开或关闭,这很容易被注意到,因此我怀疑这实际上可能不是问题。对于新来者,快速而肮脏的解决方案是将属性ng value替换为value,并使用本机javascript获取值并将其分配给scope变量
<select id="categoryId" class="category"
ng-model="selectedCategory"
ng-change="selectedCategory()">
<option ng-repeat="selectedCategories in categories" value="selectedCategories"></option>
</select>
您需要使用
ui-select2
,这是select2
的角度版本。注意,ui-select2已被弃用,并且是为select2@~3.4编写的,可能无法使用select2@4.0
<select id="categoryId" class="category"
ng-model="selectedCategory"
ng-change="selectedCategory()">
<option ng-repeat="selectedCategories in categories" value="selectedCategories"></option>
</select>
$scope.selectedCategory.name = document.getElementById('categoryId').value;