আপনার পরিষেবাটি একটি কাস্টম অ্যাঙ্গুলারজেএস সরবরাহকারী হিসাবে সেট আপ করুন
স্বীকৃত উত্তর যা বলেছে তা সত্ত্বেও, আপনি আসলে যা করতে চেয়েছিলেন তা করতে পারেন তবে কনফিগারেশন সরবরাহকারী হিসাবে আপনাকে এটি সেট আপ করতে হবে, যাতে এটি কনফিগারেশন পর্বের সময় পরিষেবা হিসাবে পাওয়া যায় .. প্রথমে আপনার Serviceসরবরাহকারীর সাথে পরিবর্তন করুন নিচে দেখানো হয়েছে. এখানে মূল পার্থক্যটি হ'ল মান নির্ধারণের পরে defer, আপনি defer.promiseসম্পত্তিটি প্রতিশ্রুতি দেওয়া বস্তুতে সেট করে দিয়েছিলেন $http.get:
সরবরাহকারী পরিষেবা: (সরবরাহকারী: পরিষেবা রেসিপি)
app.provider('dbService', function dbServiceProvider() {
//the provider recipe for services require you specify a $get function
this.$get= ['dbhost',function dbServiceFactory(dbhost){
// return the factory as a provider
// that is available during the configuration phase
return new DbService(dbhost);
}]
});
function DbService(dbhost){
var status;
this.setUrl = function(url){
dbhost = url;
}
this.getData = function($http) {
return $http.get(dbhost+'db.php/score/getData')
.success(function(data){
// handle any special stuff here, I would suggest the following:
status = 'ok';
status.data = data;
})
.error(function(message){
status = 'error';
status.message = message;
})
.then(function(){
// now we return an object with data or information about error
// for special handling inside your application configuration
return status;
})
}
}
এখন, আপনার কাছে একটি কনফিগারযোগ্য কাস্টম সরবরাহকারী রয়েছে, আপনাকে কেবল এটি ইনজেক্ট করতে হবে। "আপনার ইনজেক্টেবল সরবরাহকারী" অনুপস্থিত হওয়ায় এখানে মূল পার্থক্য।
কনফিগ:
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: "partials/editor.html",
controller: "AppCtrl",
resolve: {
dbData: function(DbService, $http) {
/*
*dbServiceProvider returns a dbService instance to your app whenever
* needed, and this instance is setup internally with a promise,
* so you don't need to worry about $q and all that
*/
return DbService('http://dbhost.com').getData();
}
}
})
});
আপনার মধ্যে সমাধান ডেটা ব্যবহার করুন appCtrl
app.controller('appCtrl',function(dbData, DbService){
$scope.dbData = dbData;
// You can also create and use another instance of the dbService here...
// to do whatever you programmed it to do, by adding functions inside the
// constructor DbService(), the following assumes you added
// a rmUser(userObj) function in the factory
$scope.removeDbUser = function(user){
DbService.rmUser(user);
}
})
সম্ভাব্য বিকল্প
নিম্নলিখিত বিকল্পটি একটি অনুরূপ পদ্ধতির, তবে .configআপনার অ্যাপ্লিকেশনের প্রসঙ্গে নির্দিষ্ট মডিউলের মধ্যে পরিষেবাটি আবদ্ধ করে, সংজ্ঞায়িত হওয়ার অনুমতি দেয় । আপনার জন্য সঠিক যে পদ্ধতিটি চয়ন করুন। এই সমস্ত জিনিসের হ্যাং পেতে আপনাকে সহায়তা করতে তৃতীয় বিকল্প এবং সহায়ক লিঙ্কগুলির নোটগুলির জন্য নীচে দেখুন
app.config(function($routeProvider, $provide) {
$provide.service('dbService',function(){})
//set up your service inside the module's config.
$routeProvider
.when('/', {
templateUrl: "partials/editor.html",
controller: "AppCtrl",
resolve: {
data:
}
})
});
কয়েকটি সহায়ক সংস্থান
- জন লিন্ডকুইস্টের এন্ডহেড.আইও- তে একটি দুর্দান্ত 5 মিনিটের ব্যাখ্যা এবং বিক্ষোভ রয়েছে , এবং এটি একটি নিখরচায় পাঠ! আমি মূলত
$httpএই অনুরোধের প্রসঙ্গে নির্দিষ্ট করে তার প্রদর্শনকে সংশোধন করেছি
- সরবরাহকারীগুলিতে অ্যাঙ্গুলারজেএস বিকাশকারী গাইড দেখুন
- সম্পর্কে
factory/ service/ provider clevertech.biz এ একটি দুর্দান্ত ব্যাখ্যা রয়েছে ।
সরবরাহকারী আপনাকে .serviceপদ্ধতির তুলনায় আরও কিছুটা কনফিগারেশন দেয় যা এটি অ্যাপ্লিকেশন স্তরের সরবরাহকারী হিসাবে আরও ভাল করে তোলে তবে আপনি এটি কনফিগার ইনজেক্টের $provideমাধ্যমে কনফিগার করে নিতে পারেন: