【问题标题】:how can I read error messages from a properties file just like struts in angularjs?如何从属性文件中读取错误消息,就像 angularjs 中的 struts 一样?
【发布时间】:2015-06-04 22:10:54
【问题描述】:

我正在考虑将错误消息存储在我的 UI 框架 (angularjs) 的属性文件中。当休息调用失败时,根据错误代码,我可以从文件中读取消息并将其显示在 UI 上。类似于 struts 通过 messageresource 属性处理这个问题。我试图查找 angularjs 文档,但没有得到任何关于如何做到这一点的方向。有关如何在 angularjs 中实现此功能的任何建议?

【问题讨论】:

    标签: angularjs internationalization struts


    【解决方案1】:

    这是在 UI 中显示错误消息的方法之一。

    像这样创建一个json文件ErrorMessages

    {
    "ERROR-EDIT": "Some problems by updating the item!",
    "ERROR-SAVE": "Some problems by saving the changes!",
    "ERROR-DELETE": "Some problems by deleting!",
    "ERROR-EMAIL": "E-Mail is not valid!"
    }
    

    要从 json 文件中获取数据,您必须在控制器中创建对该文件的 http 请求。

    假设你的模块和其他角度配置是有效的,控制器应该是这样的:

    app.controller('mainController', ['$scope', '$http', function ($scope, $http) {
    //HTTP call to get data from file with valid url    
    $http.get('../Resources/ErrorMessages.json').success(function (data) {
            $scope.listMessages = data;
        });
    }]);
    

    最后,key note 使用键值(显式方式)仅显示该对象的一个​​属性:

    <body ng-controller="mainController">
    
        <p>{{listMessages["ERROR-EDIT"]}}</p><br /><br />
        <p>{{listMessages["ERROR-DELETE"]}}</p><br /><br />
        <p>{{listMessages["ERROR-EMAIL"]}}</p><br /><br />
        <p>{{listMessages["ERROR-SAVE"]}}</p><br /><br />
    
    </body>
    

    您还可以创建带有参数的函数,包括对象和键以显示相同的结果。

    我希望这个想法能推动你前进:)

    【讨论】:

    • 这应该在每个控制器上。因此,在导航到不同的页面时,它会一次又一次地加载相同的数据。应该在根范围内进行更好的初始化,但在初始化任何控制器之前。
    【解决方案2】:

    阅读 Angular 中的 http-interceptors 以处理类似的全局内容。 Angular 中没有结构的概念。 Angular 试图保持其核心相当简单,并且只包含核心内容。您可能想使用 http 拦截器编写自己的模块来处理类似的事情。

    您可以编写一个错误日志服务,并在您想要记录错误的所有控制器中注入。该服务可以将您的日志保存到 Mongo 或任何地方

    【讨论】:

    • 能否有一个简单的属性文件,我可以在其中提供一个键值对并根据键在 UI 上显示值。这可以在没有拦截器的情况下完成吗?
    • 它总是可以在没有拦截器的情况下完成,但问题是,你想要在什么级别上做到这一点。您可以拥有一个 JSON 文件,编写一个服务并将所有错误从 json 到您的错误日志服务中的某个 aaray。然后将此服务注入您要记录错误或在 UI 上显示的所有控制器中。
    • 实际上比从 JSON 文件中读取更好,创建一个 CONSTANT 对象,您可以在其中放置尽可能多的键值对。您仍然必须在所有服务中注入您的 constact。最佳实践是,您使用带有 JSON 文件的服务或常量对象,将其注入到最父级控制器中。它可以在所有子控制器中访问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多