看起来像这样:
<ui-select multiple ng-model="multipleDemo.colors" theme="select2" ng-disabled="disabled" style="width: 300px;"> <ui-select-match placeholder="Select colors...">{{$item}}</ui-select-match> <ui-select-choices repeat="color in availableColors | filter:$select.search"> {{color}} </ui-select-choices> </ui-select> <p>Selected: {{multipleDemo.colors}}</p>
最初,我的选择框应该是空的,但是可以使用打字字符,这是一个至少4个字符的字符串,然后进行API调用来检索要填充框的建议值列表.然后选择一个值,并根据需要重复搜索.
首先,我尝试$观看ng模型,在这种情况下,这是多个Demo.colors(使用这个示例从演示). API调用从未发生,然后我意识到为什么.实际的模型根本没有改变,因为只有当选择时才会改变(我的选择框为空,所以没有任何选择).
我的结论是,我应该(能够)$看什么被添加为过滤器,即过滤器:$select.search.
有谁知道我应该在我的控制器中使用那个?
这个:
$scope.$watch('$select.search',function(newVal){ alert(newVal); });
不行
编辑:
对于任何人的参考,请参阅这个简短的讨论:Is it possible to add support for custom query function like the select2?
编辑2:
我通过使用指令中的$emit来解决这个问题,所以我的控制器现在可以使用这个值.但是现在我想知道如何覆盖该指令的这一部分,因此指令本身可以保持原样,以便将来的更新不会中断?
<ui-select-choices repeat="color in multipleDemo.availableColors | filter:$select.search" refresh="refreshColors($select.search)" refresh-delay="0"> {{color}} </ui-select-choices>
然后使用函数(这个代码段中的refreshColors())相应地更新multipleDemo.availableColors.
您还可以使用refresh-delay属性来指定去抖动函数的毫秒数,以便快速连续地调用太多次.
我也把可用的颜色放在multiDemo上,就像你已经为multiDemo.colors所做的那样,就像recommended一样.
参考:ui-select directive wiki下的示例:Async.
原文地址:https://www.jb51.cc/angularjs/140520.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。