在以下情况下,我正在Angular v1.x中开发一个应用程序。
当用户单击添加要约(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”是动作,并且在控制器中没有动作名称是不合适的。
几乎好像我的控制者是他们自己的行动,这使我怀疑我的做法。我应该采取不同的方法吗?
答案 0 :(得分:1)
根据控制器的命名约定,最好选择一个字面描述控制器功能的名称。 我建议您将控制器名称选择为[action] [Type] [Controller]。 在这种情况下,AddOffersController和DecideOffersController将是合适的名称。
答案 1 :(得分:1)
根据您的描述
现在,如果我们查看 SOLID 的 Single Responsibility 负责人,我们应该创建2个独立的控制器,因为除了要询问用户(买方/关于卖方的选择),即,我们还显示了他们的所有报价。这也将有助于我们扩展各自的业务 以后再编写代码,以防万一我们计划在显示在UI上之前处理数据。
因此,最好使用更好的
html
文件名,例如offerConfirmation.html
。因为,我们也显示了报价。当前,您已使用yesno.html
。
对于控制器名称,我认为我们可以使用类似的东西:
BuyerConfimationController
SellerConfirmationController
我之所以选择这个名称,是因为offersAddController
和offersDecideController
之类的名称对于某些新开发人员来说并不容易解释,除非他知道卖方可以add
并且买方将decide
。 (尽管听起来可能很明显)。
我知道为用户(卖方/买方)了解add
和decide
听起来似乎很明显,但是将来很有可能使角色变得更加复杂(或者如果我们在处理一些与域相关的特殊用户时,我们需要先了解用户角色,然后再触摸代码)。保持尽可能明确的控制器名称将有助于任何新开发人员直接跳至特定控制器并进行必要的更改。