javascript - 更新注入(inject)的服务后刷新 AngularJS 过滤器

标签 javascript angularjs

当注入(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/

相关文章:

javascript - 如何使用 Node.js (express.js) 开发 Multi-Tenancy 应用程序?

JavaScript 在尝试创建私有(private)函数时与闭包混淆

javascript - AngularJS - 如何覆盖 $urlRouterProvider.when

javascript - 如何使用 AngularJS 路由到 subview ?

javascript - 使用 Jasmine 进行 VS、Resharper、Karma 和 AngularJS 模板单元测试

javascript - AngularJS 选择不动态填充

javascript - 如何使用JavaScript在浏览器中提示位置共享权限?

javascript - 如何从 Node JS 中的 url 下载文件?

javascript - 如何在 Firebase 和 Ionic 中过滤数据?

javascript - 处理 GET 路由上的 POST 请求 (express.js)