2016-01-12 127 views
1

我已经在我的自动完成以下可以用角料自动完成(MD-自动完成)

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

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

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; 
      })); 
     }); 
    }); 
};