我正在使用带有anguarJS的Typeahead引导程序从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 doc 示例版本 0.12.1中,异步加载是通过 typeahead="address for address in getLocation($viewVlue) 触发的,但他们没有在模型上使用观察者。他们的 getLocations 方法是我的 getSpecificationTemplatesNames 方法。
有人可以帮助执行此操作并与我一起转换代码并使用coffeescript正确使用typeahead-wait-ms选项!