2015-05-19 126 views
3

我想从这里md-chipsAngularMaterial MD-芯片:不要展<MD-自动完成>选择的项目

<md-autocomplete>例如为了防止所选的项目从进入室内<md-autocomplete>我已经修改了querySearch功能这样:

function querySearch (query) { 
    var results = query ? self.searchData.filter(createFilterFor(query)) : []; 
    var finalResults = []; 
    angular.forEach(results, function(result) { 
     if($scope.selectedItems.indexOf(result.name) < 0) { 
      finalResults.push(result); 
      updateSelectedItems(result);  
     } 
    }); 
    return finalResults; 
} 

但是我的问题是,一旦我们选择一个项目,控件不会进入这个函数。有人可以解释如何解决这个问题吗?

回答

3

我发现从本文档中的解决方案:md-autocomplete

我们只需要添加md-no-cache="true"用于调用querySearch功能我们每次搜索查询项目

+1

这仍然不适用于我:(你可能会上传一个jsfiddle? – arnoutaertgeerts

+0

如果可以使codepen,将是真棒。 –

+0

它也不适合我的任何帮助吗? –

1

为我工作的解决时间: 的MD md-autocomplete上的-no-cache =“true”仍然是强制自动完成重新初始化md-items的必须工具; Md芯片应该具有md-on-remove和md-on-append集合并实现为从列表中移除芯片或将芯片添加到列表;

我的代码看起来是这样的: HTML:

md-on-remove="removeTagChip($chip)" 
md-on-append="appendTagChip($chip)" 

JS:

$scope.removeTagChip = function (chip) { 
    var chipPos = $scope.getPosition(chip.Id, $scope.ChipTags); 
    if (chipPos < 0) { 
     $scope.ChipTags.push(chip); 
    } 
}; 
$scope.appendTagChip = function (chip) { 
    var chipPos = $scope.getPosition(chip.Id, $scope.ChipTags); 
    if (chipPos > -1) { 
     $scope.ChipTags.splice(chipPos, 1); 
    } 
    return chip; 
}; 

$ scope.getPosition刚刚返回的芯片列表中的芯片的位置;

相关问题