AngularJS在控制器中处理多个数据部分

时间:2014-02-16 01:33:45

标签: javascript angularjs

我正在构建一个基本上在您选择期权时计算价格的应用。所以基本上它是一个带有选择选项的表单,当你在表单中下载时,应用程序将处理更精细的价格并更改其他表单字段的选项。

目前我已经内置了一个API,在此处理过程中,该应用需要在几个不同的时间点击API。最终将有7-12个表单字段构成定价选项。在绘制控制器时,我想知道保持处理有条理的最佳方法是什么。如果我用PHP这样的语言这样做,每个表单元素都有不同的函数,每次表单更改时都会处理。

在Angular中,每个视图都有一个控制器,我很好奇你们这个专家如何组织它......

在一个非特定的语言结构中,我在想...... ...

  1. 选择一个有5个选项,用户选择一个。
  2. 使用第一步中的数据进行计算,点击API并获取选择号码2的新选项。用户选择选项并再次进行处理。
  3. 所以如果我的控制器说...

    .controller("formController", function($scope){
            //Function for when select one changes, listen for form change ng-change
            function item1Change(){
               //hit api with item1 value, get options for item2 and and load them into item2
            }
            function item2Change(){
               //hit api with item2 value, get options for item3 and and load them into item3
            }
        })
    

    对我而言,这似乎非常脏,因为我需要定义东西,它似乎不是模块化或分段,我只是觉得有更好的选择。如果你们有任何更好的想法,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:1)

对视图可用的控制器数量没有限制。我要遵循的一般最佳实践*是为每个$scope初始化一个控制器,我认为需要处理的内容比它的父作用域或者作用域内指令的行为定义更加谨慎。

我会用:

  • 一个formCtrl
  • a priceCtrl
  • 计算总数的自定义指令
  • 选择行为的指令策略,其范围与表单控制器配对(一个或多个指令)
  • 根据需要向控制器和指令提供选项配置,依赖关系等的服务(这是将数据与控制器分离并封装数据处理/处理的好方法。这也使您可以如果需要,为不同的表单视图提供相同的数据

您可以将指令和指令策略视为与使用装饰器模式的方式类似。通过使用特定指令修饰表单输入,它可以 __

*(这是我自己的最佳实践,我不能说这是Angular团队或整个社区的支持)