আমি এই ব্লগ পোস্টে সেই সঠিক সমস্যাটি সমাধান করার চেষ্টা করেছি ।
মূলত, ডেটা মডেলিংয়ের জন্য সেরা বাড়িটি পরিষেবা এবং কারখানাগুলিতে। তবে, আপনি কীভাবে আপনার ডেটা এবং আপনার প্রয়োজনীয় আচরণগুলির জটিলতা পুনরুদ্ধার করে তার উপর নির্ভর করে বাস্তবায়ন সম্পর্কে বিভিন্ন ধরণের উপায় রয়েছে। কৌণিকের বর্তমানে কোনও মান নেই উপায় বা সেরা অনুশীলন নেই।
পোস্টটি $ http , $ রিসোর্স এবং রেস্টাঙ্গুলার ব্যবহার করে তিনটি পন্থাকে covers েকে রাখে ।
এখানে getResult()
কাজের মডেলটিতে একটি কাস্টম পদ্ধতি সহ প্রত্যেকটির জন্য কয়েকটি উদাহরণ কোড দেওয়া হয়েছে :
পুনরায় সংশ্লেষ (সহজ প্যাসি):
angular.module('job.models', [])
.service('Job', ['Restangular', function(Restangular) {
var Job = Restangular.service('jobs');
Restangular.extendModel('jobs', function(model) {
model.getResult = function() {
if (this.status == 'complete') {
if (this.passed === null) return "Finished";
else if (this.passed === true) return "Pass";
else if (this.passed === false) return "Fail";
}
else return "Running";
};
return model;
});
return Job;
}]);
$ সংস্থান (সামান্য আরও বিশৃঙ্খল):
angular.module('job.models', [])
.factory('Job', ['$resource', function($resource) {
var Job = $resource('/api/jobs/:jobId', { full: 'true', jobId: '@id' }, {
query: {
method: 'GET',
isArray: false,
transformResponse: function(data, header) {
var wrapped = angular.fromJson(data);
angular.forEach(wrapped.items, function(item, idx) {
wrapped.items[idx] = new Job(item);
});
return wrapped;
}
}
});
Job.prototype.getResult = function() {
if (this.status == 'complete') {
if (this.passed === null) return "Finished";
else if (this.passed === true) return "Pass";
else if (this.passed === false) return "Fail";
}
else return "Running";
};
return Job;
}]);
$ HT (হার্ড):
angular.module('job.models', [])
.service('JobManager', ['$http', 'Job', function($http, Job) {
return {
getAll: function(limit) {
var params = {"limit": limit, "full": 'true'};
return $http.get('/api/jobs', {params: params})
.then(function(response) {
var data = response.data;
var jobs = [];
for (var i = 0; i < data.objects.length; i ++) {
jobs.push(new Job(data.objects[i]));
}
return jobs;
});
}
};
}])
.factory('Job', function() {
function Job(data) {
for (attr in data) {
if (data.hasOwnProperty(attr))
this[attr] = data[attr];
}
}
Job.prototype.getResult = function() {
if (this.status == 'complete') {
if (this.passed === null) return "Finished";
else if (this.passed === true) return "Pass";
else if (this.passed === false) return "Fail";
}
else return "Running";
};
return Job;
});
ব্লগ পোস্ট নিজেই আপনি প্রতিটি পন্থা কেন ব্যবহার করতে পারেন তার পিছনে যুক্তি এবং সেইসাথে আপনার নিয়ন্ত্রকদের মডেলগুলি কীভাবে ব্যবহার করবেন তার কোড উদাহরণগুলিতে আরও বিশদে যায়:
AngularJS ডেটা মডেল: $ HT VS $ রিসোর্স ভিএস রেষ্টাঙ্গুলার
অ্যাঙ্গুলার ২.০ ডেটা মডেলিংয়ের আরও দৃ solution় সমাধান প্রস্তাব করবে যা একই পৃষ্ঠায় প্রত্যেককে পেয়ে যায় a