如何清除 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
设置为 true
或 false
,具体取决于您是否要继续缓存查询结果。
从 angular-material 的 1.0.5 版开始,这是不可能的。我没有找到任何可接受的解决方法,所以我只是使用 md-no-cache="true"
.
禁用缓存
我 logged an issue for this 参与了 angular-material 项目,包括关于它如何工作的建议。
对我有用的东西。在你的自动完成上放一个 ng-if。然后,在更改影响此字段的其他字段的值的代码中,将该值设置为 false,然后在超时内再次将其设置为 true。这将有效地从 DOM 中删除该项目,并在没有缓存的情况下将其放回原处。
我正在使用 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
设置为 true
或 false
,具体取决于您是否要继续缓存查询结果。
从 angular-material 的 1.0.5 版开始,这是不可能的。我没有找到任何可接受的解决方法,所以我只是使用 md-no-cache="true"
.
我 logged an issue for this 参与了 angular-material 项目,包括关于它如何工作的建议。
对我有用的东西。在你的自动完成上放一个 ng-if。然后,在更改影响此字段的其他字段的值的代码中,将该值设置为 false,然后在超时内再次将其设置为 true。这将有效地从 DOM 中删除该项目,并在没有缓存的情况下将其放回原处。