সম্পাদনা 7/1/15:
আমি এই উত্তরটি বেশ দীর্ঘদিন আগে লিখেছি এবং কিছুক্ষণ কৌণিকের সাথে খুব একটা রাখছি না, তবে মনে হচ্ছে এই উত্তরটি এখনও তুলনামূলকভাবে জনপ্রিয়, তাই আমি এটি উল্লেখ করতে চেয়েছিলাম যে @nicolas নীচে তোলে ভাল হয়। একটির জন্য, $ রুটস্কোপ ইনজেকশন করা এবং সেখানকার সহায়কদের সংযুক্ত করা আপনাকে প্রতিটি নিয়ামকের জন্য এগুলি যুক্ত করা থেকে বিরত রাখবে। এছাড়াও - আমি সম্মত হই যে আপনি যা যুক্ত করছেন তা যদি কৌণিক পরিষেবা বা ফিল্টার হিসাবে বিবেচনা করা উচিত তবে সেগুলি কোডে সেই পদ্ধতিতে গ্রহণ করা উচিত।
এছাড়াও, বর্তমান সংস্করণ ১.৪.২ অনুসারে, কৌণিক একটি "সরবরাহকারী" এপিআই প্রকাশ করে, যা কনফিগারেশন ব্লকগুলিতে প্রবেশের অনুমতিপ্রাপ্ত। আরও জন্য এই সংস্থানগুলি দেখুন:
https://docs.angularjs.org/guide/module#module-loading-dependencies
মডিউল.কনফিগের অভ্যন্তরের মানের কৌণিক জেএস নির্ভরতা ইনজেকশন
আমি মনে করি না যে আমি নীচের আসল কোড ব্লকগুলি আপডেট করব, কারণ আমি আজকাল সত্যিকার অর্থে কৌনিকটি ব্যবহার করছি না এবং আমি সত্যিই নতুন উত্তরটির সাথে সঙ্গতি বোধ করছি এমন স্বাচ্ছন্দ্য বোধ না করেই কোনও নতুন উত্তরকে বিপত্তি করতে চাই না really চর্চা। অন্য কেউ যদি আপত্তি বোধ করে তবে সর্বদা এটির জন্য যান।
সম্পাদনা 2/3/14:
এটি সম্পর্কে চিন্তাভাবনা করার পরে এবং অন্যান্য উত্তরগুলি পড়ার পরে, আমি আসলে আমার মনে হয় যে আমি @ ব্রেন্ট ওয়াশবার্ন এবং @ আমোগ তালপল্লিকার দ্বারা উত্থিত পদ্ধতির বিভিন্নতাকে পছন্দ করি। বিশেষত যদি আপনি ইসনটস্ট্রিং () বা অনুরূপ মতো ইউটিলিটিগুলি সন্ধান করেন। এখানে একটি সুস্পষ্ট সুবিধা হ'ল আপনি এগুলিকে আপনার কৌনিক কোডের বাইরে পুনরায় ব্যবহার করতে পারেন এবং এগুলি আপনার কনফিগার ফাংশনের অভ্যন্তরে ব্যবহার করতে পারেন (যা আপনি পরিষেবাগুলির সাথে করতে পারবেন না)।
বলা হচ্ছে, আপনি যদি পরিষেবাগুলি যথাযথভাবে হওয়া উচিত তবে পুনরায় ব্যবহারের সাধারণ উপায় সন্ধান করছেন, আমার মনে হয় যে পুরানো উত্তরটি এখনও একটি ভাল।
আমি এখন যা করব তা হ'ল:
app.js:
var MyNamespace = MyNamespace || {};
MyNamespace.helpers = {
isNotString: function(str) {
return (typeof str !== "string");
}
};
angular.module('app', ['app.controllers', 'app.services']).
config(['$routeProvider', function($routeProvider) {
// Routing stuff here...
}]);
controller.js:
angular.module('app.controllers', []).
controller('firstCtrl', ['$scope', function($scope) {
$scope.helpers = MyNamespace.helpers;
});
তারপরে আপনার আংশিক ক্ষেত্রে আপনি ব্যবহার করতে পারেন:
<button data-ng-click="console.log(helpers.isNotString('this is a string'))">Log String Test</button>
পুরানো উত্তর নীচে:
তাদের পরিষেবা হিসাবে অন্তর্ভুক্ত করা ভাল। যদি আপনি সেগুলি হিসাবে একাধিক নিয়ামক জুড়ে তাদের পুনরায় ব্যবহার করতে যাচ্ছেন তবে কোডটি পুনরাবৃত্তি করতে আপনাকে রক্ষা করবে।
আপনি যদি এইচটিএমএল আংশিকভাবে পরিষেবা ফাংশন ব্যবহার করতে চান, তবে আপনার সেগুলি নিয়ামকের স্কোপে যুক্ত করা উচিত:
$scope.doSomething = ServiceName.functionName;
তারপরে আপনার আংশিক ক্ষেত্রে আপনি ব্যবহার করতে পারেন:
<button data-ng-click="doSomething()">Do Something</button>
আপনি এই সমস্ত সংগঠিত এবং অত্যধিক ঝামেলা থেকে মুক্ত রাখতে পারেন এমন এক উপায়:
আপনার নিয়ামক, পরিষেবা এবং রাউটিং কোড / কনফিগারটিকে তিনটি ফাইলে পৃথক করুন: কন্ট্রোলার.জেস, পরিষেবাদি.জে এবং অ্যাপ.জেএস। শীর্ষ স্তর মডিউলটি হ'ল "অ্যাপ্লিকেশন", যা নির্ভরতা হিসাবে app.controllers এবং app.services রয়েছে। তারপরে app.controllers এবং app.services তাদের নিজস্ব ফাইলগুলিতে মডিউল হিসাবে ঘোষণা করা যেতে পারে। এই সাংগঠনিক কাঠামোটি মাত্র কৌনিক বীজ থেকে নেওয়া হয়েছে :
app.js:
angular.module('app', ['app.controllers', 'app.services']).
config(['$routeProvider', function($routeProvider) {
// Routing stuff here...
}]);
services.js:
/* Generic Services */
angular.module('app.services', [])
.factory("genericServices", function() {
return {
doSomething: function() {
//Do something here
},
doSomethingElse: function() {
//Do something else here
}
});
controller.js:
angular.module('app.controllers', []).
controller('firstCtrl', ['$scope', 'genericServices', function($scope, genericServices) {
$scope.genericServices = genericServices;
});
তারপরে আপনার আংশিক ক্ষেত্রে আপনি ব্যবহার করতে পারেন:
<button data-ng-click="genericServices.doSomething()">Do Something</button>
<button data-ng-click="genericServices.doSomethingElse()">Do Something Else</button>
এইভাবে আপনি প্রতিটি নিয়ামককে কেবলমাত্র একটি লাইন কোড যুক্ত করুন এবং যেখানেই সুযোগটি অ্যাক্সেসযোগ্য যে কোনও পরিষেবা ফাংশন অ্যাক্সেস করতে সক্ষম হবেন।