【发布时间】:2014-07-13 07:45:09
【问题描述】:
我有一个基类,我想在服务中扩展它以帮助将数据获取到角度范围内。我在网上搜索了解决方案,但没有找到我喜欢的解决方案。我有一个用于访问设备文件系统的基类
类结构:
var cOfflineStorageBase = Class.extend({
init: function(){
},
CreateFolderDir: function(){
},
DeleteAll: function(){
},
DeleteDirectories: function(){
},
DeleteItem: function(){
},
GetFiles: function(){
},
FileExists: function(){
},
GetPath: function(){
},
GetObject: function(){
},
SaveObject: function(){
},
});
我希望能够在几个不同的角度服务(即offlineCart、offlineCustomLists 等)中扩展这个类,其中每个服务都可以使用存储库来存储各种不同的数据类型。我正在寻找最好,最合适的方式来做到这一点。在 vanilla JavaScript 中,只需执行以下操作:
var newClass = cOfflineStorageBase.extend({
//add new stuff here
});
但我想以有角度的方式做同样的事情。
我一直在考虑的方法是使用 angular.extend 功能,但我不确定这是否合适,或者这样的方法是否更合适:
app.factory('someChild', ['$http' , 'cOfflineStorageBase',
function($http, cOfflineStorageBase){
var SomeClass = cOfflineStorageBase.extend({
init: function(){
this._super.init()
},
//Add more stuff here
});
return SomeClass;
}]);
如果这些方法是正确的,或者是否有另一种更适合我想要完成的方法,我想要一些建议。我也希望或者宁愿需要在大部分代码中使用 Promise,因为它是异步的。
【问题讨论】:
-
工厂必须返回一个实例(即
new SomeClass()),或者您应该使用角度服务(即angular.service('someChild', SomeClass))。当然,除非你想要的是返回一个函数构造函数而不是一个服务实例。
标签: javascript angularjs oop inheritance angular-services