如何在Angular中隔离表单的逻辑

时间:2016-01-14 16:22:18

标签: angularjs angularjs-directive

有时表单有一些逻辑:ajax请求一些额外的数据,它读取cookie或有一个特殊的过滤器。我想将这个逻辑与控制器分开。我也希望有表格' html在一个单独的文件中。怎么做到这一点?

是否可以使用表单使工厂或服务工作?

我对将每个表单实现为指令有所了解。这会是一个很好的解决方案吗?

修改: 主要目标不是将HTML移动到单独的文件,而是将表单逻辑移出主路由控制器。是否可以编写一些负责表单的提供程序,以便在此提供程序中进行表单选择元素(和其他逻辑)的所有数据查询,并在最后调用控制器的函数以保存经过验证的数据?

2 个答案:

答案 0 :(得分:1)

  1. 我也希望有表格' html在一个单独的文件中。如何实现这一目标?

    您可以使用ng-include之类的现成指令来包含外部HTML片段,也可以使用自己的模板展开directive

  2. 是否可以通过表单使工厂或服务工作?

    您可以创建其操作专用于处理表单的任何提供程序。这是你的模型,而不是角度技术。

  3. 我对将每个表单实现为指令有所了解。这会是一个很好的解决方案吗?

    如果您的应用程序中有许多表单并且它们扮演着关键角色,那么 - 拥有表单指令可以称为特定的解决方案。由于应用程序的其余部分未知,因此无法在此明确判断优缺点。

  4. 可能this是您应该开始研究的地方之一。

答案 1 :(得分:-2)

你的问题太宽泛了。如果您想将表单与控制器分开,则需要将该表单放入directive,这样您就可以将表单的html和javascript放在单独的文件中。

将表单html放在单独的文件中的另一种方法是使用ng-include,但是,这只是让你移动html,而第一种方法将允许你为表单html提供一个单独的控制器。

  

我对将每个表单实现为指令有所了解。这会是一个很好的解决方案吗?

我相信这是您正在寻找的解决方案。