使用Angular Material Autocomplete时可以过滤承诺吗(md-autocomplete)

时间:2016-01-12 15:21:03

标签: angularjs angular-material

我的自动填充功能

中有以下内容
md-autocomplete(flex-gt-sm="50"
                placeholder="Select label or enter new label",
                md-selected-item="ctrl.node.label",
                md-items="item in ctrl.getLabels() | filter:ctrl.labelSearchText",
                md-item-text="item",
                md-search-text="ctrl.labelSearchText",
                md-floating-label="Label")
  md-item-template
    span {{item}}

以下为getLabels

this.getLabels = function() {
  return Restangular.all('label').getList();
};

当我运行此代码时,它不会过滤结果,而是获得整个列表。有没有办法过滤这些结果?

1 个答案:

答案 0 :(得分:1)

我不确定您是否可以使用标签本身的角度过滤器进行过滤。但您可以使用javascript函数中的lodash.filter或角度过滤器来执行此操作。

md-autocomplete(flex-gt-sm="50"
                placeholder="Select label or enter new label",
                md-selected-item="ctrl.node.label",
                md-items="item in ctrl.getLabels(ctrl.labelSearchText)",
                md-item-text="item",
                md-search-text="ctrl.labelSearchText",
                md-floating-label="Label")
  md-item-template
    span {{item}}

getLabels功能。

this.getLabels = function(searchText) {
    return this.$q(function (resolve) {
        Restangular.all('label').getList().then(function (result) {
             resolve(_.filter(result.data, function(label) {
                 // filter here, simple case string equality
                 return label === searchText;
             }));
        });
    });
};