AngularJS变量内部范围或自定义指令:与ng-messages-include相关

时间:2018-03-20 17:40:35

标签: angularjs angularjs-directive angularjs-scope ng-messages

我正在学习AngularJS,遇到过一个场景,不知道什么是最好的方法。

以下是该方案。

html网页正在服务器https://example.com/com/server/上运行,并且可以添加/forms/resource/error.html or forms/src/main/abc.js等附加网址

当我尝试像下面这样包含时,它会给我404 error,因为它没有找到确切的路径

<div ng-messages-include="error.html"></div>

它试图明显地找到下面位置的html并给出错误,我可以给这个路径相对吗?尝试过几个选项并不像单引号那样工作 https://example.com/com/server/error.html

实际路径应为https://example.com/com/server/form/resources/error.html

我知道我可以提供像

这样的路径
<div ng-messages-include="form/resources/error.html"> </div>

但是假设路径相对较长,如果我需要在大约50个位置添加它,会使html看起来很难看。

有关以下方法的建议

  • 创建自定义指令errorMessage,然后添加为<error-message><error-message>并返回错误消息html模板,在指令中我可以给出实际html模板的长路径

  • 或者在$ scope对象中创建一个变量,比如location,然后在那里设置完整的字符串,使用如下所示 <div ng-messages-include='{{location}}/error.html'></div> //not sure of the syntax

1 个答案:

答案 0 :(得分:0)

如果路径“应为https://example.com/com/server/form/resources/error.html”,则将其写为源代码中的cuch。绝对路径总是正确的,为什么不使用呢?

现在如果你担心重复,你可以写一个自定义指令。

另一个选择是拥有一个“本地”变量,一个范围属性,如errorTemplateURL

$scope.errorTemplateURL= 'https://example.com/com/server/form/resources/error.html';

然后您将用作:

<div ng-messages-include="{{errorTemplateURL}}"></div>

但是如果你需要跨控制器共享该变量,你应该创建一个服务并将其注入任何需要它的控制器。

注意:它是ng-messages-include而不是ng-message-include