如何清除 md-autocomplete 缓存?

How to clear the md-autocomplete cache?

我正在使用 md-autocomplete 来显示 api 查询的结果。属性 md-items 正在迭代承诺:item in getItems(searchText).

这很好用,并且使用相同搜索文本的缓存后续使用 return 立即得到相同的结果。

但是当其他搜索参数发生变化时,我需要能够在某些时候清除缓存。我怎样才能做到这一点?也许通过访问 md-autocomplete 控制器?虽然这看起来不标准而且我不确定如何。

绝对可以随时在 md-autocomplete 指令上以编程方式重置 md-no-cache 属性。

如果您的控制器上有一个布尔变量,假设:

$scope.noCacheResults = false;

然后在您的指令中,您可以将此变量绑定到 md-no-cache 属性:

<md-autocomplete ...
                 md-no-cache="noCacheResults">
</md-autocomplete>

像这样,每当您的搜索参数发生变化时,您可以将 $scope.noCacheResults 设置为 truefalse,具体取决于您是否要继续缓存查询结果。

从 angular-material 的 1.0.5 版开始,这是不可能的。我没有找到任何可接受的解决方法,所以我只是使用 md-no-cache="true".

禁用缓存

logged an issue for this 参与了 angular-material 项目,包括关于它如何工作的建议。

对我有用的东西。在你的自动完成上放一个 ng-if。然后,在更改影响此字段的其他字段的值的代码中,将该值设置为 false,然后在超时内再次将其设置为 true。这将有效地从 DOM 中删除该项目,并在没有缓存的情况下将其放回原处。