Javascript AngularJS typeahead将条目添加到结果列表

Javascript AngularJS typeahead将条目添加到结果列表,javascript,angularjs,typeahead,Javascript,Angularjs,Typeahead,我有一个typeahead可以正常工作,但我希望能够在文本与任何现有单词不匹配的情况下将文本添加到结果列表中,并且我希望此选项立即出现 这在这里工作正常: 但是,如果异步需要一段时间才能返回结果,则结果列表在等待时为空。我想经营这条线 script.js:15: addresses.push({格式化的_地址:val+“(新)”,几何体:“自定义”}) 在异步请求返回之前 为了说明这是如何不起作用的,我更改了请求“”中的地址, 对无效的东西。在这种情况下,即使我希望看到作为建议的书面文本,前面

我有一个typeahead可以正常工作,但我希望能够在文本与任何现有单词不匹配的情况下将文本添加到结果列表中,并且我希望此选项立即出现

这在这里工作正常:

但是,如果异步需要一段时间才能返回结果,则结果列表在等待时为空。我想经营这条线

script.js:15:
addresses.push({格式化的_地址:val+“(新)”,几何体:“自定义”})

在异步请求返回之前

为了说明这是如何不起作用的,我更改了请求“”中的地址, 对无效的东西。在这种情况下,即使我希望看到作为建议的书面文本,前面的字体也不会显示任何内容


我希望这是可以理解的

您可以通过将
addresses
变量置于
$scope
上,然后在typeahead中读取,而不是从
getLocation
方法读取,来解决此问题。您需要在对输入进行更改时更新它,因此在输入上添加一个
ng change
属性,并从那里调用您的
getLocation
方法,在ajax查询回调中,只需将结果附加到addresses数组

<input 
    id="input"
    type="text" 
    ng-model="asyncSelected" 
    ng-change="getLocation()"
    placeholder="Locations loaded via $http" 
    typeahead="address as address.formatted_address for address in addresses" 
    typeahead-loading="loadingLocations" 
    class="form-control">


(注意:ngChange在解决这个问题时有一些问题,所以我建议您创建一个自定义指令,该指令的行为有所修改)。请在此处查看基本解决方案:

谢谢,但这不起作用。我以前也尝试过类似的方法,但最终还是遇到了同样的问题。正如您在示例中看到的,前面的typeahead后面有一个字符。当我写“a”时,我得到一个空结果,当我写“ab”时,我得到一个“a”的结果,等等。