当注入(inject)服务中的数据更新时,有什么方法可以刷新过滤器的输出吗?
我将 UserPreferenceService 注入(inject)到过滤器中以修改输出 - 当 UserPreferenceService 的数据更新时,我想更新过滤器的输出。
目前,UserPreferenceService 的数据仅影响初始加载时的过滤器输出,或者当模板中的输入发生更改并重新应用过滤器时:
angular.module('myModule').filter('myFilter', function ($filter, UserPreferenceService) {
return function (input) {
var output;
if (UserPreferenceService.someOption === "foo") {
output = input + "bar";
} else {
output = input + "baz";
}
return output;
}
});
最佳答案
如果你在部分(html)中调用过滤器,过滤器将在每个摘要过程中再次调用,因此你可以通过直接调用摘要来强制执行它,如果你在JS代码中使用过滤器,会有点复杂
您可以在过滤器所在的 Controller 范围内调用 $scope.$digest()
或 $scope.$apply()
这将触发 $rootScope.$digest
并摘要所有范围
关于javascript - 更新注入(inject)的服务后刷新 AngularJS 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29016011/