मैं इस पुस्तकालय का मूल्यांकन करके विचार आया: https://github.com/FacultyCreative/ngActiveResource
हालांकि इस पुस्तकालय सख्त बाकी मान लिया गया है तो मैं यह मेरे लिए काम नहीं किया गया था। क्या के लिए काम किया है यह है:
मैं आधार मॉडल बनाया
var app = angular.module('app', []);
app .factory('Model', function(){
var _cache = {}; // holding existing instances
function Model() {
var _primaryKey = 'ID',
_this = this;
_this.new = function(data) {
// Here is factory for creating instances or
// extending existing ones with data provided
}
}
return Model;
});
से मैं साधारण समारोह एक्सटेंशन ले लिया "विरासत"
Function.prototype.inherits = function (base) {
var _constructor;
_constructor = this;
return _constructor = base.apply(_constructor);
};
और अब मैं इस
की तरह मेरे मॉडल बनाने कैम
app.factory('Blog', [
'Model',
'$http',
function(Model, $http) {
function Blog() {
// my custom properties and computations goes here
Object.defineProperty(this, 'MyComputed' , {
get: function() { return this.Prop1 + this.Prop2 }
});
}
// Set blog to inherits model
Blog.inherits(Model);
// My crud operations
Blog.get = function(id) {
return $http.get('/some/url', {params: {id:id}}).then(function(response) {
return Blog.new(response.data);
});
}
return Blog;
}
]);
अंत में, इसे contr में उपयोग करके oller
app.controller('MyCtrl', [
'$scope', 'Blog',
function($scope, Blog) {
Blog.get(...).then(function(blog) {
$scope.blog = blog;
});
}
])
अब, हमारे मॉडल और एक्सटेंशन में बहुत कुछ है लेकिन यह एक मुख्य सिद्धांत होगा। मैं दावा नहीं कर रहा हूं कि यह सबसे अच्छा तरीका है लेकिन मैं बहुत बड़ा ऐप काम कर रहा हूं और यह वास्तव में मेरे लिए बहुत अच्छा काम करता है।
नोट: कृपया ध्यान दें कि मैंने यह कोड यहां टाइप किया है और कुछ त्रुटियां हो सकती हैं लेकिन मुख्य सिद्धांत यहां है।
यह लागू करने में आसान लगता है; यह किसी भी तरह से स्क्वामा को जोड़ने के लिए सही होगा जो मैंने नोड पक्ष पर मोन्गोज के साथ परिभाषित किया है ताकि मुझे उन गुणों को प्राप्त किया जा सके जहां से उन्हें फिर से लिखने के बजाय परिभाषित किया गया हो और उन्हें कोणीय सेवा से तरीकों से जोड़ दिया जाए। मैं ngResource के बारे में सोच रहा था लेकिन कामकाजी मामले में सफल नहीं रहा है। क्या यह समझ में आता है? – vonwolf
मुझे इसके बारे में निश्चित नहीं है। ऐसा लगता है कि ऐसा करके (और मुझे नहीं पता कि यह संभव है या नहीं) आप फ्रंटेंड और बैकएंड को जोड़े जाने की कोशिश कर रहे हैं। अंगूठे के नियम के रूप में, अधिक decoupled, बेहतर। वैसे भी, 'ngResource'' $ http' संसाधन के लिए सिर्फ एक रैपर है, जिसे मैं व्यक्तिगत रूप से पसंद नहीं करता हूं। – domokun
@domokun आपके मामले में 'नया myFactory()' कैसे काम करता है? कारखाना एक वस्तु देता है, इसलिए आप सामान्य रूप से उस पर 'नया ...() 'नहीं कह सकते हैं। क्या आप कुछ अतिरिक्त चालबाजी कर रहे हैं? मुझे लगता है कि 'ऑब्जेक्ट फ़ंक्शन नहीं है' चल रहा है। – Lycha