开始使用Angular JS - 结构和其他问题

时间:2013-08-01 17:47:00

标签: javascript model-view-controller angularjs architecture

我是AngularJS的新手,已经完成了它的教程,阅读了一些文档,并且我理解了主要方面。但是我想在组织项目结构时提供一些帮助。

基本上,我想要一个单页应用程序。将有几个主要部分,例如:客户,销售,报告等。每个部分都有自己的页面,例如“添加客户”,“查看销售报告”等。

1)那么,我应该为我的应用制作一个模块,每个屏幕都有不同的路由和控制器吗?

2)或者我应该有多个模块,例如一个模块用于“客户”,一个模块用于“销售”等?

3)假设我有一个“添加客户”表单,其中包含许多字段。我希望这个表单是交互式的,例如,如果用户从下拉列表中选择他的国家/地区,我想通过ajax请求加载该国家/地区的城市。我会在我的控制器中执行此事件处理,还是应该为它做出指令?如果我只需要为一个表单使用此功能,如果我仍然遇到编写指令的麻烦怎么办?

4)我想构建一个CRUD表单构建器类型的库,我将在其中添加所需的字段,然后它将生成添加/编辑/删除/列表视图和表单,以及所需的表单验证。像这样:

var crud = new CrudLib();
crud.addTextbox('first').label('First Name').rules('required');
crud.addTextbox('email').label('Email').rules('required,email');
//....
crud.init();

我应该将它作为模块,指令还是其他东西?

1 个答案:

答案 0 :(得分:1)

(一个问题中的问题太多了。)

1)和2):根据需要将控制器和服务组织到模块中。我倾向于将“相关事物”放入一个单独的模块中。例如,一个LoginCtrl,LogoutCtrl,UserService等我把它放入一个User.js文件,这是一个模块。

3)AJAX交互应该放在服务/工厂/提供者中。事件处理应该在指令中。 (指令有时看起来有点麻烦/过度,但是只要你需要操作DOM,附加事件处理程序或重用一大块HTML就可以使用它们。)

4)如果需要自定义表单验证,则需要编写指令。另请参阅How can I use Angular to output dynamic form fields?