【发布时间】:2014-10-25 08:35:53
【问题描述】:
我正在 angularjs 中开发大型前端应用程序。
我想知道这种方法是否可以在 angularjs 中使用,是否存在漏洞、性能问题或其他缺点。
控制器中的第一个代码
function ServiceHandler() {
var self = this;
self.init();
}
ServiceHandler.prototype = {
constructor : ServiceHandler,
request : undefined,
init : function(){
self.callService();
},
createRequest : function() {
self.request = {};
self.request = Service.getRequest();
},
callService : function() {
self.iAmLoading = true;
self.createRequest();
Service.callService(self.request).then(function(response) {
self.iAmLoading = false;
if (angular.isDefined(response) && angular.isDefined(response.data)) {
self.handleRequest(response);
}
}, function(error) {
self.handleSystemError(error);
});
},
handleRequest : function(response) {
if (angular.isUndefined(self.response)) {
self.response = {};
}
if (angular.isUndefined(response.data)) {
self.handleError(response);
}else {
self.response = response.data;
}
},
handleSytemError : function(error) {
// show 404
},
handleError : function(response) {
// think on what to do with your response
}
}
然后我用控制器初始化方法绑定它
$scope.init(){
$scope.myServiceHandler = new ServiceHandler(); // in this manner i call the service first time because the constructor call the init method on my ServiceHandler object also
}
我用 dom 绑定它
<div ng-controller="myController" ng-init="init()">
在 html 中,我可以参考我的回复:
{{myServiceHandler.response.myResponseProperty}}
如果我想要一个按钮来召回我的服务,我可以这样做:
<button ng-click='myServiceHandler.callService()'></button>
我个人认为这种结构的优势在于代码的组织性,而且这种结构似乎更面向对象,实现起来更有趣
让我知道你的想法。 谢谢并恭祝安康 安东尼奥
PS - 我为这个问题编写了这段代码,我是即时编写的,我认为它可以工作,但我不是 100% 肯定,它没有经过测试 :) 我写过其他这样的控制器,它们在现在生产,似乎工作正常。
PS2 - 请原谅我的英语,我现在正在学习它,我现在在 Duolingo 上只有 1500 xp :) :)
【问题讨论】:
-
这个问题似乎更适合codereview.stackexchange.com
标签: javascript angularjs oop