আমি কীভাবে আমার AngularJS অ্যাপ্লিকেশনটিতে কিছু ছোট ইউটিলিটি ফাংশন যুক্ত করতে পারি?


146

আমি আমার AngularJS অ্যাপ্লিকেশনটিতে কিছু ইউটিলিটি ফাংশন যুক্ত করতে চাই। উদাহরণ স্বরূপ:

$scope.isNotString = function (str) {
    return (typeof str !== "string");
}

তাদের পরিষেবা হিসাবে যুক্ত করার জন্য কি এটি করার সর্বোত্তম উপায়? আমি যা পড়েছি তা থেকে আমি এটি করতে পারি তবে তারপরে আমি এইগুলিকে আমার এইচটিএমএল পৃষ্ঠাগুলিতে ব্যবহার করতে চাই তাই তারা যদি কোনও পরিষেবায় থাকে তবে এটি এখনও সম্ভব? উদাহরণস্বরূপ আমি নিম্নলিখিতটি ব্যবহার করতে পারি:

 <button data-ng-click="doSomething()"
         data-ng-disabled="isNotString(abc)">Do Something
 </button>

কেউ কীভাবে আমি এগুলি যুক্ত করতে পারি তার উদাহরণ দিতে পারে। আমার কি কোনও পরিষেবা তৈরি করা উচিত বা এটি করার কোনও অন্য উপায় আছে। সর্বাধিক গুরুত্বপূর্ণ আমি কোনও ফাইলটিতে এই ইউটিলিটি ফাংশনগুলি পছন্দ করি এবং প্রধান সেটআপের অন্য অংশের সাথে একত্রিত না করি।

আমি বুঝতে পারি এর কয়েকটি সমাধান রয়েছে তবে এর কোনওটিই এত পরিষ্কার নয়।

সমাধান 1 - নগর দ্বারা প্রস্তাবিত

$scope.doSomething = ServiceName.functionName;

এখানে সমস্যাটি আমার কাছে 20 টি ফাংশন এবং দশটি নিয়ামক রয়েছে। যদি আমি এটি করি এটির অর্থ প্রতিটি নিয়ামককে প্রচুর কোড যুক্ত করা।

সমাধান 2 - আমার প্রস্তাবিত

    var factory = {

        Setup: function ($scope) {

            $scope.isNotString = function (str) {
                return (typeof str !== "string");
            }

এর অসুবিধেটি হ'ল প্রতিটি নিয়ামক শুরুর সময় আমার কাছে প্রতিটি সেটিংয়ে এই সেটআপ কলগুলির একটি বা একাধিক হবে যা $ সুযোগটি পেরিয়ে গেছে।

সমাধান 3 - নগর দ্বারা প্রস্তাবিত

জেনেরিক পরিষেবা তৈরির নগর কর্তৃক প্রস্তাবিত সমাধানটি দেখতে ভাল লাগছে। এখানে আমার প্রধান সেট আপ:

var app = angular
    .module('app', ['ngAnimate', 'ui.router', 'admin', 'home', 'questions', 'ngResource', 'LocalStorageModule'])
    .config(['$locationProvider', '$sceProvider', '$stateProvider',
        function ($locationProvider, $sceProvider, $stateProvider) {

            $sceProvider.enabled(false);
            $locationProvider.html5Mode(true);

আমার কি জেনেরিক পরিষেবাটি যুক্ত করা উচিত এবং আমি কীভাবে এটি করতে পারি?


এখানে আমার উত্তর চেক stackoverflow.com/a/51464584/4251431
বশীর আল MOMANI

উত্তর:


107

সম্পাদনা 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>

এইভাবে আপনি প্রতিটি নিয়ামককে কেবলমাত্র একটি লাইন কোড যুক্ত করুন এবং যেখানেই সুযোগটি অ্যাক্সেসযোগ্য যে কোনও পরিষেবা ফাংশন অ্যাক্সেস করতে সক্ষম হবেন।


আমার এগুলির বিশটি কার্য থাকতে পারে এবং আমি এগুলি একাধিক নিয়ামকগুলিতে ব্যবহার করতে চাই। আমি এটি সম্পর্কে ভেবেছিলাম তবে কোডটি এতটা ব্যবহারিক ব্যবহারের মতো নয়: $ સ્કોপ.ডোসোমিংথিং = সার্ভিসনেম.ফানশননাম; প্রতিটি নিয়ামকের ভিতরে। আমি আরও কিছু বিশদ সহ আমার প্রশ্ন আপডেট করব। ধন্যবাদ
অ্যালান 2

হ্যাঁ এই পরিষেবাগুলির প্রতিটি ফাংশনের জন্য আপনার যদি একটি লাইন যুক্ত করার প্রয়োজন হয় তবে এটি আপনি যদি একটি লাইনের সুযোগের সাথে পুরো পরিষেবাটি (এটির সমস্ত কার্যকারিতা সহ) যুক্ত করতে পারেন তবে তা বোঝা যায় I আপনি উল্লিখিত সমাধান 2 কীভাবে কাজ করতে পারে সে সম্পর্কে আমি খুব পরিষ্কার নই?
নগর_কৌকন

1
@ আরবান_ক্রুনস: আমিও এইভাবেই শুরু করেছি, তবে দুর্ভাগ্যক্রমে আপনি কনফিগারেশনে এ জাতীয় পরিষেবাগুলি ইনজেক্ট করতে পারবেন না। আমি হেডারে টোকন যুক্ত করতে একটি ইন্টারসেপ্টারের ভিতরে আমার auth_service অ্যাক্সেস করতে চেয়েছিলাম তবে আমি বুঝতে পেরেছিলাম যে পরিষেবাটি কনফিগারেশনে ইনজেকশন দেওয়া যাবে না। কেবল ধ্রুবকরা পারেন। আমি মনে করি ধ্রুবকগুলিতে ফাংশন যুক্ত করা আরও ভাল পদ্ধতির হওয়া উচিত।
আমোগ তালপল্লিকার

1
আমি কেবল জিজ্ঞাসা করছি, কারণ আমি প্রাথমিকভাবে জেএস লোক নই, তবে আপনার নিজের নেমস্পেসটি ব্যবহার করে কোনও অনুলিপি বা সিঙ্গলটন তৈরি করা যাবে? আপনার যদি এক টন মডিউল থাকে তবে একই পরিষেবাটির অনুলিপি থাকা মেমরির অপচয় হবার মতো মনে হয়, বিশেষত যদি আপনি কেবলমাত্র একজন সহায়ক ব্যবহার করতে চান।
এরিক কীট

3
@ এরিককেয়েট নেমস্পেস হ'ল একটি অবজেক্ট ল্যাটারেল, যা জেএসে এক ধরণের সিঙ্গলটন। বিলম্বিত জবাবের জন্য দুঃখিত :)
নগর_ক্রকুনস

32

এই পুরানো থ্রেডে এসে আমি চাপ দিতে চেয়েছিলাম

1 °) ইউটিলিটি ফাংশনগুলি (উচিত?) মডিউল.আরুনের মাধ্যমে রুটস্কোপে যুক্ত করা যেতে পারে। এই উদ্দেশ্যে নির্দিষ্ট রুট স্তরের নিয়ামককে প্রবর্তন করার দরকার নেই।

angular.module('myApp').run(function($rootScope){
  $rootScope.isNotString = function(str) {
   return (typeof str !== "string");
  }
});

2 °) আপনি যদি নিজের কোডটি পৃথক মডিউলগুলিতে সংগঠিত করেন তবে আপনাকে কৌনিক পরিষেবা বা কারখানা ব্যবহার করা উচিত এবং তারপরে রন ব্লকে প্রদত্ত ফাংশনটিতে সেগুলি ইনজেকশন করা উচিত:

angular.module('myApp').factory('myHelperMethods', function(){
  return {
    isNotString: function(str) {
      return (typeof str !== 'string');
    }
  }
});

angular.module('myApp').run(function($rootScope, myHelperMethods){ 
  $rootScope.helpers = myHelperMethods;
});

3 My) আমার বোধগম্যতা হল দর্শনগুলির ক্ষেত্রে, বেশিরভাগ ক্ষেত্রে আপনার প্রদর্শিত স্ট্রিংগুলিতে কোনও ধরণের বিন্যাস প্রয়োগ করার জন্য আপনাকে এই সহায়ক সহায়ক প্রয়োজন। এই শেষ ক্ষেত্রে আপনার যা প্রয়োজন তা হ'ল কৌণিক ফিল্টার ব্যবহার করা

এবং যদি আপনি কৌণিক পরিষেবা বা কারখানায় কিছু নিম্ন স্তরের সহায়ক পদ্ধতি কাঠামোবদ্ধ করে থাকেন তবে কেবল সেগুলি আপনার ফিল্টার কনস্ট্রাক্টরের মধ্যে ইনজেক্ট করুন:

angular.module('myApp').filter('myFilter', function(myHelperMethods){ 
  return function(aString){
    if (myHelperMethods.isNotString(aString)){
      return 
    }
    else{
      // something else 
    }
  }
);

এবং আপনার দৃষ্টিতে:

{{ aString | myFilter }}   

উভয় সমাধান উদ্বেগ- runসময়। কনফিগার সময় সম্পর্কে কি? আমাদের সেখানে ইউটিলিটিগুলির দরকার নেই?
সিরিল চ্যাপন

কনফিগার করার সময় আপনার কোনও সরবরাহকারীর প্রয়োজন (এক ধরণের পরিষেবা) কৌনিক জেএস ডক চেকআউট
নিকোলাস

1
# 3 সমাধানটি আমার কাছে সেরা বলে মনে হচ্ছে। একবার ফিল্টার নিবন্ধিত হয়ে গেলে আপনি অন্য কোথাও এটি ব্যবহার করতে পারেন। আমি এটি আমার মুদ্রার বিন্যাস এবং তারিখের ফর্ম্যাটিংয়ের জন্য ব্যবহার করেছি।
ওলানটোবি

6

আমি কি সঠিকভাবে বুঝতে পারি যে আপনি কেবল কয়েকটি ইউটিলিটি পদ্ধতি সংজ্ঞায়িত করতে এবং সেগুলি টেমপ্লেটে উপলব্ধ করতে চান?

আপনাকে এগুলি প্রতিটি নিয়ামকের সাথে যুক্ত করতে হবে না। সমস্ত ইউটিলিটি পদ্ধতির জন্য কেবল একটি একক নিয়ামককে সংজ্ঞায়িত করুন এবং << এইচটিএমএল> বা <body> (এনজিগ নিয়ন্ত্রণকারী নির্দেশিকা ব্যবহার করে) সাথে এই নিয়ামকটি যুক্ত করুন। <html> (যে কোনও জায়গায়, সময়কাল) বা <body> (কোথাও তবে <শিরোনাম) এর অধীনে আপনি যে কোনও অন্য সংযোজক সংযুক্ত করুন that সুযোগটি উত্তরাধিকার সূত্রে পাবেন এবং সেই পদ্ধতিগুলিতে অ্যাক্সেস পাবেন।


1
এটি অবশ্যই এটি করার সর্বোত্তম উপায়। কেবল একটি ইউটিলিটি কন্ট্রোলার রাখুন এবং এটি পুরো প্রকল্পের মোড়ক / ধারক ডিভে রাখুন, এর মধ্যে থাকা সমস্ত কন্ট্রোলার উত্তরাধিকার সূত্রে প্রাপ্ত হবে: <div class="main-container" ng-controller="UtilController as util">তারপরে কোনও অভ্যন্তরীণ দৃষ্টিতে:<button ng-click="util.isNotString(abc)">
ইয়ান জে মিলার

4

ইউটিলিটি ফাংশন যুক্ত করার সহজ উপায় হ'ল এগুলি বিশ্ব স্তরে ছেড়ে দেওয়া:

function myUtilityFunction(x) { return "do something with "+x; }

তারপরে, কোনও ইউটিলিটি ফাংশন যুক্ত করার সহজ উপায় (একটি নিয়ামককে) এটি এটিকে নির্ধারিত করা $scope:

$scope.doSomething = myUtilityFunction;

তারপরে আপনি এটিকে এভাবে কল করতে পারেন:

{{ doSomething(x) }}

বা এই মত:

ng-click="doSomething(x)"

সম্পাদনা করুন:

মূল প্রশ্নটি যদি কোনও পরিষেবার মাধ্যমে কোনও ইউটিলিটি ফাংশন যুক্ত করার সর্বোত্তম উপায় হয়। আমি বলি না, যদি ফাংশনটি যথেষ্ট সহজ হয় (যেমন isNotString()ওপি দ্বারা সরবরাহিত উদাহরণের মতো )।

কোনও পরিষেবা লেখার সুবিধা হ'ল পরীক্ষার উদ্দেশ্যে অন্যটিকে (ইঞ্জেকশনের মাধ্যমে) প্রতিস্থাপন করা। চূড়ান্ত দিকে নিয়ে যাওয়া, আপনার কি প্রতিটি নিয়ামক আপনার কন্ট্রোলারে ইউটিলিটি ফাংশন ইনজেকশন প্রয়োজন?

ডকুমেন্টেশনটি নিয়ামক (যেমন $scope.double) এর মধ্যে সহজভাবে আচরণের সংজ্ঞা দিতে বলে : http://docs.angularjs.org/guide/controller


পরিষেবা হিসাবে ইউটিলিটি ফাংশনগুলি আপনাকে আপনার নিয়ন্ত্রকগুলিতে বাছাই করে এগুলি অ্যাক্সেস করার অনুমতি দেয় .. যদি কোনও নিয়ামক তাদের ব্যবহার না করে তবে পরিষেবাটি তাত্ক্ষণিকভাবে চালু হবে না।
StuR

আমি আসলে আপনার পদ্ধতির মতো এবং এটিকে আমার সম্পাদিত উত্তরে অন্তর্ভুক্ত করেছি। আমার অনুভূতি আছে যে কেউ আপনাকে বিশ্বব্যাপী ফাংশন (এবং নেমস্পেস দূষণ) এর কারণে নিচে নামিয়ে রেখেছে, তবে আমার একটা অনুভূতি আছে যে আপনি সম্ভবত আমি যেটা লিখেছিলে তার অনুরূপ একটি পদ্ধতিকে সংযুক্ত করতে পারত যদি আপনি ভেবেছিলেন যে অনেক বেশি হাত ধরে রাখা দরকার necessary ।
নগর_ক্রকুনগুলি

ব্যক্তিগতভাবে, জেনেরিক, ছোট, ইউটিলিটি ফাংশনগুলি বিশ্বব্যাপী তৈরি করার ক্ষেত্রে আমি কোনও সমস্যা দেখতে পাচ্ছি না। এটি সাধারণত আপনার কোডবেজে সমস্ত জিনিস ব্যবহার করা হবে, তাই যে কেউ তাদের সাথে খুব দ্রুত পরিচিত হয়ে উঠবে। এগুলিকে ভাষার ক্ষুদ্র এক্সটেনশন হিসাবে দেখুন।
কর্নেল ম্যাসন

আপনার সম্পাদনায় আপনি উল্লেখ করেছেন "ডকুমেন্টেশনটি নিয়ামককে (যেমন $ স্কোপ.ডুবলের মতো) কেবল আচরণের সংজ্ঞা দিতে বলে"। আপনি কি বলছেন যে ডকুমেন্টেশনটি নিয়ন্ত্রণকারীদের মধ্যে ইউটিলিটি ফাংশনগুলি রাখার পরামর্শ দেয়?
লসমেস্কেলরোস

@ ললমেস্কেলরোস হ্যাঁ, ডকুমেন্টেশন ডকস.আঙ্গুলারজেএস.আর
ওয়াশবার্ন

4

এখানে আমি ব্যবহার করি একটি সাধারণ, কমপ্যাক্ট এবং সহজে বোঝার পদ্ধতি।
প্রথমে আপনার জেএসে একটি পরিষেবা যুক্ত করুন।

app.factory('Helpers', [ function() {
      // Helper service body

        var o = {
        Helpers: []

        };

        // Dummy function with parameter being passed
        o.getFooBar = function(para) {

            var valueIneed = para + " " + "World!";

            return valueIneed;

          };

        // Other helper functions can be added here ...

        // And we return the helper object ...
        return o;

    }]);

তারপরে, আপনার নিয়ামকটিতে, আপনার সহায়ক অবজেক্টটি ইনজেকশন করুন এবং নীচের মতো কিছু সহ যে কোনও উপলব্ধ ফাংশনটি ব্যবহার করুন:

app.controller('MainCtrl', [

'$scope',
'Helpers',

function($scope, Helpers){

    $scope.sayIt = Helpers.getFooBar("Hello");
    console.log($scope.sayIt);

}]);

2
এটি একটি বিষয় স্পষ্টভাবে দেখায় যে আমি মাঝে মাঝে কৌণিক কেন পছন্দ করি না: "একটি পরিষেবা যুক্ত করুন" ... এবং তারপরে কোডে একটি নতুন কারখানা তৈরি করে ()। নকশার নিদর্শনগুলি থেকে, তারা একই জিনিস নয় - কারখানাটি সাধারণত নতুন বস্তু উত্পাদন করার জন্য ব্যবহৃত হয় এবং কিছু কার্যকারিতা বা সংস্থান "পরিষেবা" দেওয়ার জন্য পরিষেবাটি ভাল। এই জাতীয় মুহুর্তগুলিতে আমি "ডব্লিউটি *, কৌণিক" বলতে চাই।
জাস্টামার্টিন

1

আপনি যেমন ধ্রুবক পরিষেবাটি ব্যবহার করতে পারেন। ধ্রুবক কলটির বাইরে ফাংশনটি সংজ্ঞায়িত করা এটিকেও পুনরাবৃত্ত করতে দেয়।

function doSomething( a, b ) {
    return a + b;
};

angular.module('moduleName',[])
    // Define
    .constant('$doSomething', doSomething)
    // Usage
    .controller( 'SomeController', function( $doSomething ) {
        $scope.added = $doSomething( 100, 200 );
    })
;

0

নিয়ামক উত্তরাধিকার কেন ব্যবহার করবেন না, HeaderCtrl এর স্কোপে সংজ্ঞায়িত সমস্ত পদ্ধতি / বৈশিষ্ট্য এনজি-ভিউয়ের মধ্যে নিয়ামকটিতে অ্যাক্সেসযোগ্য। $ স্কোপ.সওয়ার্হেল্পার আপনার সমস্ত কন্ট্রোলারে অ্যাক্সেসযোগ্য।

    angular.module('fnetApp').controller('HeaderCtrl', function ($scope, MyHelperService) {
      $scope.servHelper = MyHelperService;
    });


<div ng-controller="HeaderCtrl">
  <div ng-view=""></div>
</div>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.