具有相同逻辑的两个AngularJS控制器
我有两个div,每个div都需要一个控制器来处理其中的活动。当然,两个控制器的名称不同 这种情况是有问题的,因为它需要对两段相同的代码进行维护 我在考虑两种选择,并征求意见:具有相同逻辑的两个AngularJS控制器,angularjs,controller,Angularjs,Controller,我有两个div,每个div都需要一个控制器来处理其中的活动。当然,两个控制器的名称不同 这种情况是有问题的,因为它需要对两段相同的代码进行维护 我在考虑两种选择,并征求意见: 将通用代码部署到单独的文件中,并使用jQuery将该文件包含到两个控制器中 创建一个新文件,其中包含一个函数,该函数将接收与控制器相同的参数,并包含两个控制器中当前托管的整个逻辑。然后,只需从两个控制器中调用此函数 在第二个选项中,控制器的主体将变成一条语句,即调用新函数 从我找到的帖子来看,第一个选项似乎确实有效。我的问
myApp.controller("First_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
$scope.Do_Something = function () {
// some code here
}
}
控制器2
myApp.controller("Second_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
$scope.Do_Something = function () {
// some code here
}
}
想法是将其转换为:
控制器1-新的
myApp.controller("First_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
Common_Function($rootScope , $scope) ;
}
myApp.controller("Second_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
Common_Function($rootScope , $scope) ;
}
控制器2-新的
myApp.controller("First_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
Common_Function($rootScope , $scope) ;
}
myApp.controller("Second_Controller", "$rootScope", "$scope" , [function($rootScope , $scope) {
Common_Function($rootScope , $scope) ;
}
其中:
Common_Function = function ($rootScope , $scope) {
$scope.Do_Something = function () {
// some code here
}
}
你能发布控制器代码吗?如果看不到您正在做什么,很难进行评论,但一般来说,做这类事情的方法是将公共代码放入服务中,并将服务注入控制器中。您还可以使用ES6类,定义一个具有共享行为的公共控制器类,然后将其子类化。谢谢@MikeFeltman。事实上,代码的细节在本文中并不重要。我想的是做一些行为像包含但实际上不包含任何内容的事情的概念。看见通过向函数传递与控制器相同的参数(主要是
$scope
),无论代码在控制器中执行什么操作,如果它包含在被调用的函数中,则执行的操作基本相同。好。。。这就是我所想的,问题是:这有意义吗?与人们争论代码意味着你对答案不感兴趣。如果你问了一个问题,并假设某人可能比你更了解这个问题,你必须相信他们的意见(即使你不相信,也有关于这个问题的规则)。如果有代码可以说明你的情况,请张贴出来,不要让回答者乞求。用文字描述代码是行不通的。亲爱的@estus,首先,我重新阅读了我的评论,甚至找不到“论点”的暗示。第二,我在这里发帖的事实应该会激发这样一种假设,即我确实欣赏周围有人比我更了解这一事实。第三点(也是最后一点),请检查我所做的编辑,(至少我希望)你可能会同意我关于实际代码无关性的观点。啊,所以控制器并不是完全相同的,就像你之前所说的那样。授权给单一职能部门是您认为最好的解决方案。更好的解决方案是,IMHO是两个继承基类的控制器类。或具有属性whoAmI的组件。