返回每个数据,而不仅仅是键入的数据

时间:2016-08-28 02:46:56

标签: angularjs twitter-bootstrap angular-ui-bootstrap bootstrap-typeahead

我使用ui.bootstrap typeahead作为

HttpClient

通过数据库中的$ http.get获取数据

uib-typeahead="search as search.name for search in vm.searching($viewValue)"

搜索指令看起来像这样

vm.searching = function() {
      return $http.get('http://localhost:3000/api/allcoaches')
      .then(function(response) {
        return response.data;       
    }); 
};

response.data

.component('searchbox',{
    restrict: 'E',
    templateUrl: '/common/searchbox/searchbox.template.html',
    bindings: {
        text: '<'
    },
    controller: 'SearchBoxController',
    controllerAs: 'vm'
});

它只是转向显示数据中的每个对象,而不仅仅是在搜索框中键入的内容。就像我输入&#39; a&#39;它返回所有&#39; a,b,c,d&#39;在下拉列表中。 我做错了什么?

1 个答案:

答案 0 :(得分:2)

您没有在服务中进行任何过滤,而是获得API / allcoaches。将键入值传递给服务并获取过滤结果或在控制器中进行过滤。

如果您在控制器中进行内存中过滤,则无需每次都按服务。您可以获得所有教练一次(在此方法之外),然后在此方法中执行$ filter。

但我建议您在api中进行过滤并返回已过滤的列表。

再次决定在客户端或api中进行过滤取决于您的业务场景。如果您的数据库中有太多的教练,那么请在api中进行过滤。如果数据量较少,则通过点击api获取所有教练,将该列表保留在其中一个视图模型属性中,然后从该内存列表中过滤。