angularjs - Ui.Bootstrap Typeahead 不适用于异步调用

标签 angularjs node.js sails.js angular-bootstrap angular-ui-typeahead

我正在使用 ui.bootstrap typeahead 进行异步调用。然而,生成的数据似乎没有找到返回 typeahead 指令的方法,并且随后没有数据出现下拉列表。

html 是

<input type="text" ng-model="asyncSelected" placeholder="Search Profile" typeahead="username.username for username in getSearch($viewValue)" typeahead-wait-ms="400" class="form-control">

JS函数就在这里

$scope.getSearch = function (val) {

    return $sails.get("/search/" + val).success(function (response) {
        console.log(response);
        return response.map(function (item) {
            console.log(item.username);
            return item.username;
        });

    }).error(function (response) {
        console.log('The sails profile search has failed');
    });

}

响应 JSON 对象是

Object
@type: "d"
id: "#17:3"
username: "Burt"
__proto__: Object

我正在客户端上使用 Angular-sails 来查询后端。我已经使用 ui.bootstrap 文档中给出的示例测试了代码,一切正常。

$sails.get 也可以作为 console.log(item.username) 打印出值。

我有一种感觉,它与 getSearch 函数中的 promise 有关。

有什么想法为什么下拉菜单没有出现吗?

最佳答案

我将 sails 从 10.5 更新到 11。随后客户端 SDK 发生了更改 (Sails.io),我使用 Angular-Sails 的 Angular 库也需要更新。

promise 功能发生了变化,我需要更新它。将 promise 函数更改为下面的函数解决了问题。现在,预先输入功能得到响应并出现下拉菜单。

    return $sails.get("/search/" + val)
        .then(function (response) {
            console.log(response);
            return response.data.map(function (item) {
                return item.username;
            });
        }, function (response) {
            alert('Houston, we got a problem!');
        });

关于angularjs - Ui.Bootstrap Typeahead 不适用于异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576662/

相关文章:

javascript - Laravel:compiled.php 第 7772 行中的 RuntimeException:发出 Angular http 请求时

javascript - 无法在 ion-spinner 上执行 ng-click 事件

node.js - 什么 SQLite 与 nodejs 一起使用

javascript - 如何将 JSON 数组转换为 JSON 对象?

node.js - 无法在 Pivotal Web Services 上 sails

javascript - sail.js 模型中的一个模型属性默认与另一个相同

javascript - 使用 $resource 服务访问 REST API

node.js - 在生产模式下运行 Sails 应用程序需要更长的时间来加载

javascript - 我如何在 Lodash 中执行此操作?

html - 第一个 AngularJS + Angular UI 路由器