Angular.js控制器命名方法

时间:2019-02-14 00:34:23

标签: angularjs controller modal-dialog

在以下情况下,我正在Angular v1.x中开发一个应用程序。

  1. 用户(卖方)可以向买家提供商品
  2. 用户(买方)可以接受或拒绝要约

当用户单击添加要约(1)或(2)决定要约时,我正在使用注入到我的应用程序中的Modal服务。一个例子是:

app.controller('SampleController', ["$scope", "ModalService", function($scope, ModalService) {

  $scope.showAModal = function() {

    // Just provide a template url, a controller and call 'showModal'.
    ModalService.showModal({
      templateUrl: "yesno/yesno.html",
      controller: "YesNoController"
    }).then(function(modal) {
      modal.element.modal();
      modal.close.then(function(result) {
        $scope.message = result ? "You said Yes" : "You said No";
      });
    });

  };

}]);

对于每个模态,我可以设置使用的控制器。我最初的想法是两个模式都使用一个单独的“ offersController”,它将处理两种情况的逻辑。但是对于每种情况,都必须对REST服务进行不同的api调用以获取初始视图变量。例如:

  • 当买家希望查看已收到呼叫的所有报价时,
  • 在第一种情况下,用户提出要约时,不需要当前要约

我看不出一种在同一个控制器中隔离逻辑并根据我的情况进行调用的方法。

那么我应该使用两个控制器,如果可以的话,什么是合适的命名约定?我认为有“ offersAddController”和“ offersDecideController”。但是我不确定这是正确的,因为“ add”和“ decide”是动作,并且在控制器中没有动作名称是不合适的。

几乎好像我的控制者是他们自己的行动,这使我怀疑我的做法。我应该采取不同的方法吗?

2 个答案:

答案 0 :(得分:1)

根据控制器的命名约定,最好选择一个字面描述控制器功能的名称。 我建议您将控制器名称选择为[action] [Type] [Controller]。 在这种情况下,AddOffersController和DecideOffersController将是合适的名称。

答案 1 :(得分:1)

根据您的描述

  1. 对于买方而言,我们需要获取大量数据,因为我们正在获取买方已经拥有的所有报价。
  2. 对于卖方,我们不会进行任何API调用(也许我们可以进行API调用,以显示卖方提供的所有报价或类似的东西)

现在,如果我们查看 SOLID Single Responsibility 负责人,我们应该创建2个独立的控制器,因为除了要询问用户(买方/关于卖方的选择),即,我们还显示了他们的所有报价。这也将有助于我们扩展各自的业务 以后再编写代码,以防万一我们计划在显示在UI上之前处理数据。

  

因此,最好使用更好的html文件名,例如offerConfirmation.html。因为,我们也显示了报价。当前,您已使用yesno.html

对于控制器名称,我认为我们可以使用类似的东西:

  1. BuyerConfimationController
  2. SellerConfirmationController

我之所以选择这个名称,是因为offersAddControlleroffersDecideController之类的名称对于某些新开发人员来说并不容易解释,除非他知道卖方可以add并且买方decide。 (尽管听起来可能很明显)。

我知道为用户(卖方/买方)了解adddecide听起来似乎很明显,但是将来很有可能使角色变得更加复杂(或者如果我们在处理一些与域相关的特殊用户时,我们需要先了解用户角色,然后再触摸代码)。保持尽可能明确的控制器名称将有助于任何新开发人员直接跳至特定控制器并进行必要的更改。