AngularJs中如何使用DropDown选中的值作为Filter的参数?

How to Use DropDown Selected Vaue as Parameter for Filter in AngularJs?

我正在使用 Select2 下拉菜单,它不是 Select 上的过滤器:-

我的代码:-

<div class="form-group">
                                    <script type="text/javascript">
                                            jQuery(document).ready(function($)
                                            {
                                                $("#select-res").select2();
                                        </script>
                                    <select class="form-control select" ng-model="displayName"  id="select-res">
                                        <option data-ng-repeat="objin objs" value="{{obj.displayName}}">{{obj.displayName}}</option>
                                    </select>
                                    <script>
                                        $('#select-res').select2().on('change', function(e) {
                                          var selectedval= $(this).val();
                                           alert(selectedval);
                                           // $("#filterselected").html(selectedval);
                                           // $("#filterselected").val(selectedval+' ');
                                            document.getElementById("filterselected").value = selectedval;
                                        });
                                    </script>
                                      <input id="filterselected" type="text" ng-model="displayName" />
                                </div>

我使用 data-ng-model="displayName" 进行双向绑定

过滤代码:-

<div data-ng-repeat="obj in objs | filter:displayname" >
       Results ....
</div>

我 Select 在 Select2 下拉列表中编辑的选项未输入过滤器参数。

我已将 Selected 值写入文本框,数据绑定为 ng-model ="displayName" 但未过滤 :-(

与其使用 select2 库,不如使用 angular 版本 ui-select2

在处理 angular 范围时提供更好的绑定。因为你想在这里绑定更改事件,你可以简单地使用 ng-change angular native 指令。

标记

<select ui-select2 ng-model="number" data-placeholder="Pick a number" ng-change="changeSelect()">
    <option value=""></option>
    <option value="one">First</option>
    <option value="two">Second</option>
    <option value="three">Third</option>
</select>

问题可能在于,jquery 小部件可以附加额外的输入元素,从而破坏 angular 链接。如果是这样,我可以建议尝试 2 个解决方案:

  1. 使用angular-ui/ui-select代替select2
  2. 如果您有点拒绝,请使用 angular scopes $apply 方法让 angular 知道发生了一些变化。我不知道你的 html 是否在控制器之下,如果是的话你可以在你的 onchange 处理程序
  3. 中调用 $apply("displayName = '"+selectedval+"'")

也可能有很多其他原因,例如表单和过滤器在不同的范围内