注意:在获得更多使用Angular和Java的经验之后,我正在修改这篇文章。这是为了避免发布新问题。
在过去的几个月中,与不同的模型一起在JSP代码中实现可重用的AngularJS部件,最终决定使用jsp include指令<%@include file="form-part.jsp" %>
。这很好用,现在唯一的问题是使用C Tags时的可读性问题。
例如,变量在Eclipse资源文件中的定义如下:
资源文件(.properties):
formhtml5.jsp.photoSubjectFront=Subject Front
formhtml5.jsp.photoSubjectStreet=Subject Street
formhtml5.jsp.photoSubjectRear=Subject Rear
然后,为了在Angular中使用上述变量,我发现的一种方法如下(因为必须在JSP文件中使用变量名):
JSP文件中的HTML
<fmt:message key="formhtml5.jsp.photoSubjectFront" scope="request" var="photoSubjectFront"/>
<fmt:message key="formhtml5.jsp.photoSubjectStreet" scope="request" var="photoSubjectStreet"/>
<fmt:message key="formhtml5.jsp.photoSubjectRear" scope="request" var="photoSubjectRear"/>
...
...
<div class="photos-container"
ng-init="subjectPhotos =
[{fieldName:'subject_front',
title:'${photoSubjectFront}'},
{fieldName: 'subject_street',
title: '${photoSubjectStreet}'},
{fieldName: ''subject_rear,
title: '${photoSubjectRear}'}
]">
...
...
</div>
如果您注意到,上面的HTML代码块不是很可读。
初始化数组
subjectPhotos
范围变量并在初始化中使用JSP变量${photoSubjectFront}
的最佳方法是什么?我在想是否可以在更具可读性的
<script>
块中执行此操作,但是我不确定是否可以在常规脚本块中访问scope变量。感谢您的反馈。
旧帖子:
在过去的3-4个月中,我一直在使用Angular开发基于表单的应用程序。我正准备进入下一阶段,以便可以将开发的表单(HTML5 + Script)转换为可重用的组件。开发是使用Eclipse,Java(JSP + Servlets),当然还有HTML5,JavaScript(Angular)和CSS完成的。
过去,我已经使用ASP.NET,母版页和用户控件成功地做到了这一点。
我正在寻找一种为HTML5和代码创建模块化且可重复使用的表单部件的方法,以便它们可以轻松地以另一种具有相同部件的形式重用,而布局和逻辑可能会稍作更改。
我目前正在这样做,但仅用于代码。我设法开发了Angular指令,服务和控制器,它们实际上在我对可重用性的期望方面达到了我的期望。现在唯一的问题是如何使HTML5(布局)也可重用。
我已经做了一些研究,可以列出一些选择:
使用基于Java的框架,该框架类似于ASP.NET母版页的框架。我找到了几种选择。
使用Angular指令和模板。这里的问题是,您必须组成一个很长的字符串来表示HTML部分。它认为这令人困惑。我希望有一种方法可以将可重用的HTML部分保存在单独的文件中,并将其包含在指令中或类似的内容中。
使用JSP开发可重用部分,并将其包含在主要形式中。我可以使用jsp include指令
<%@include file="form-part.jsp" %>
来包含可重用的表单部分。我正在评估选择最合适的选项的可能性。
希望您能为我提供一些示例或教程,以帮助我达到此要求。
注意:我发现良好的tutorial将会是一个很好的开始。
感谢您的反馈。
塔雷克
最佳答案
开发可重用表单的最佳方法是使用html templateUrl的指令。
您可能正在使用“模板”功能
return {
replace: true,
templateUrl: 'some_form_template.html',
// template: '<div>Hello World</div>'
}
在使用特殊验证时,您还可以使用指令来创建验证:http://ng-learn.org/2014/02/Writing_Custom_Validitions/
当涉及标记错误时,请使用ng-messages / ng-message指令:https://docs.angularjs.org/api/ngMessages/directive/ngMessages
这个问题已经被提出:How to create a angular input directive that works with form validation