加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 过滤器不刷新

发布时间:2020-12-17 07:19:21 所属栏目:安全 来源:网络整理
导读:我正在使用本地化过滤器刷新问题.加载文件后,视图不会刷新.我已经尝试了$scope.$apply()和$filter(“localization”)(localizationService.text),两者都没有. 本地化服务: angular .module("myApp") .factory("localizationService",function () { var serv
我正在使用本地化过滤器刷新问题.加载文件后,视图不会刷新.我已经尝试了$scope.$apply()和$filter(“localization”)(localizationService.text),两者都没有.

本地化服务:

angular
    .module("myApp")
    .factory("localizationService",function () {
        var service = {
            text: null,language: "en"
        };

        return service;
    });

定位过滤器:

angular
    .module("myApp")
    .filter("localization",function(localizationService) {
        return function (value) {
            if (localizationService.text && localizationService.text.hasOwnProperty(value)) {
                return localizationService.text[value];
            }
            return value;
        }
    });

控制器自动刷新要使用的文件:

$scope.$watch(function () {
        return $location.path();
    },function () {
        var fileName = "../Localizations/" + $location.path().substring(1) + "/localization-" + localizationService.language + ".json";

        $http.get(fileName).then(function (response) {
            localizationService.text = response.data;
            //$filter("localization")(localizationService.text);
            //$scope.$apply();
        });
    });

本地化en.json:

{
  "test": "this is working !"
}

HTML:

<div>{{'test' | localization}}</div>

这段代码写测试而不是这个工作!

我怎样才能解决这个问题 ?

从版本1.3.0-rc.2开始,过滤器默认为无状态.这意味着只有在左侧表达式发生更改时才会重新评估已过滤的表达式.

你有这个:

<div>{{'test' | localization}}</div>

在这种情况下,测试显然永远不会改变,所以整个表达式只会被评估一次.

您需要将过滤器标记为有状态:

app.filter("localization",function(localizationService) {

  function localization(value) {

    if (localizationService.text && localizationService.text.hasOwnProperty(value)) {
      return localizationService.text[value];
    }
    return value;
  }

  localization.$stateful = true;

  return localization;
});

演示:http://plnkr.co/edit/YIzmH3lR9350McprusAA?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读