Tôi có một lớp cơ sở mà tôi muốn mở rộng trong một dịch vụ để giúp lấy dữ liệu vào phạm vi góc. Tôi đã tìm kiếm trên mạng cho một giải pháp, nhưng đã không tìm thấy một mà tôi thích. Tôi có một lớp cơ sở được sử dụng để truy cập vào hệ thống tập tin của thiết bịMở rộng một lớp cơ sở trong dịch vụ Góc
cấu trúc lớp:
var cOfflineStorageBase = Class.extend({
init: function(){
},
CreateFolderDir: function(){
},
DeleteAll: function(){
},
DeleteDirectories: function(){
},
DeleteItem: function(){
},
GetFiles: function(){
},
FileExists: function(){
},
GetPath: function(){
},
GetObject: function(){
},
SaveObject: function(){
},
});
Tôi muốn để có thể mở rộng lớp này trong một số dịch vụ góc khác nhau (ví dụ offlineCart, offlineCustomLists , ect ...) trong đó mỗi dịch vụ sẽ có thể sử dụng cơ sở lưu trữ để lưu trữ các loại dữ liệu khác nhau. Tôi đang tìm cách tốt nhất, phù hợp nhất để làm điều này trong góc cạnh. Trong vani JavaScript, người ta sẽ làm một cái gì đó như thế này:
var newClass = cOfflineStorageBase.extend({
//add new stuff here
});
nhưng tôi muốn làm điều tương tự theo cách góc.
Cách tiếp cận Tôi đã được xem xét là sử dụng chức năng angular.extend, nhưng tôi không chắc chắn này là thích hợp hoặc một cái gì đó như thế này sẽ là một cách tiếp cận phù hợp hơn:
app.factory('someChild', ['$http' , 'cOfflineStorageBase',
function($http, cOfflineStorageBase){
var SomeClass = cOfflineStorageBase.extend({
init: function(){
this._super.init()
},
//Add more stuff here
});
return SomeClass;
}]);
Tôi muốn một số lời khuyên nếu cách tiếp cận này là chính xác hoặc nếu có thể có cách khác tốt hơn cho những gì tôi muốn hoàn thành. Tôi cũng muốn hoặc muốn sử dụng những lời hứa trong phần lớn mã này vì nó sẽ không đồng bộ.
Nhà máy phải trở về một thể hiện (ví dụ: 'new SomeClass() ') hoặc bạn nên làm điều đó bằng dịch vụ góc (ví dụ:' angular.service ('someChild', SomeClass) '). Trừ khi tất nhiên, những gì bạn muốn là trả về một hàm tạo và không phải là một cá thể dịch vụ. –