【发布时间】:2018-09-23 15:16:07
【问题描述】:
我正在使用 Typeahead 引导程序和 anguarJS 从 rails api 获取数据,问题是每次我在输入中键入字母时请求都会获取数据,我希望执行并减少一点请求的数量和去抖动它以在键入的内容和检索到的数据之间进行匹配。
这里是控制器:
getSpecificationTemplatesNames = (value) ->
dataStore.post DATASTORE_CACHE_KEY, "/specification_templates/specification_templates_names",{post: {search: value}},(data) ->
$scope.names = data.templates.names
# --- WATCHER ---
$scope.$watch 'specificationTemplate.name', (value) ->
$scope.specificationDisabledForm = !value
getSpecificationTemplatesNames(value)
这里是haml部分:
.col-md-8
%input.specification-template-name{ type: 'text', name: 'name', typeahead: 'name for name in names | filter:$viewValue | limitTo:15', typeahead_wait_ms:'2000',
ng: { model: 'specificationTemplate.name', disabled: 'contractPeriod.isArchived()' }}
在 ui-bootstrap 文档示例版本 0.12.1 中,异步加载是通过 typeahead="address for address in getLocation($viewVlue) 触发的,但它们没有'不要在模型上使用观察者。他们的 getLocations 方法是我的 getSpecificationTemplatesNames 方法。
有人可以帮助执行此操作并与我一起转换代码并使用咖啡脚本正确使用 typeahead-wait-ms 选项!
【问题讨论】:
-
有点不同@JonSenchyna
-
您是否尝试过使用
ng-model-options="{'debounce': ...}"? -
文档中没有 ng-model-option ! angular-ui.github.io/bootstrap/versioned-docs/0.12.1/#/…
-
那是因为它不是
typeahead的一部分,而是angularJS本身的一部分:docs.angularjs.org/api/ng/directive/ngModelOptions
标签: angularjs coffeescript angular-ui-bootstrap typeahead debounce