কৌণিক নিয়ন্ত্রণকারীদের ভিতরে আন্ডারস্কোর ব্যবহার করুন


126

আমি কৌণিক নিয়ন্ত্রকের অভ্যন্তরে আন্ডারস্কোর লাইব্রেরিটি কীভাবে ব্যবহার করব?

এই পোস্টে: AngularJS সীমা শেষ 2 টি রেকর্ড করে কেউ রুটস্কোপে একটি _ ভেরিয়েবল বরাদ্দ করার পরামর্শ দিয়েছিল যাতে লাইব্রেরিটি অ্যাপের মধ্যে থাকা সমস্ত স্কোপের জন্য উপলব্ধ থাকে।

তবে এটি কোথায় করবেন তা আমি পরিষ্কার নই। মানে কি এটি অ্যাপ্লিকেশন মডিউলের ঘোষণায় যাওয়া উচিত? অর্থাৎ,

var myapp = angular.module('offersApp', [])
            .config(['$rootScope', function($rootScope) { }

তবে তারপরে আমি কোথায় আন্ডারস্কোর লাইব লোড করব? আমি কেবলমাত্র আমার সূচী পৃষ্ঠায় এনজি-অ্যাপ্লিকেশন নির্দেশিকা এবং স্ক্রিপ্ট রেফারেন্স উভয় কৌণিক-জেএস এবং আন্ডারস্কোর লিবিসের কাছে পেয়েছি?

index.html:

<head>
</head>
<body ng-app="offersApp">
...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="scripts/vendor/angular.js"></script>
<script src="scripts/vendor/underscore.js"></script>
...  

আমি কীভাবে এটি অর্জন করব?


আচ্ছা আপনি কি চেষ্টা করেছেন এবং কাজ করেননি?
এমএমএম

ভাল, আমি জানি না কোথা থেকে শুরু করব। আমি কীভাবে কোনও কৌনিককে <script> ফাইলের কৌণিক অংশের সাথে যুক্ত করব? (নিয়ন্ত্রক, পরিষেবা, নির্দেশিকা ... ইত্যাদি)। ভাবের মতো কোনও প্রয়োজনীয়তা ('...') আছে কি?
পাবলো

আপনি যেমন এইচটিএমএল ফাইলটিতে আন্ডারস্কোর সহ উপযুক্ত স্ক্রিপ্ট ট্যাগটি ঘোষণা করুন ঠিক তেমনই আপনি কৌণিক বা jquery দিয়েছিলেন।
এমএমএম

এটি কি _ চরিত্রের আওতায় স্বয়ংক্রিয়ভাবে পাওয়া যাবে ?? কিভাবে ??
পাবলো

উত্তর:


231

আপনি যখন অ্যান্ডস্কোর অন্তর্ভুক্ত করবেন তখন এটি নিজেকে windowবস্তুর সাথে সংযুক্ত করে এবং তাই বিশ্বব্যাপী উপলব্ধ।

সুতরাং আপনি এটি হিসাবে কৌনিক কোড থেকে ব্যবহার করতে পারেন।

আপনি এটি কোনও পরিষেবা বা কারখানায়ও গুটিয়ে রাখতে পারেন, যদি আপনি এটি ইঞ্জেকশন করতে চান:

var underscore = angular.module('underscore', []);
underscore.factory('_', ['$window', function($window) {
  return $window._; // assumes underscore has already been loaded on the page
}]);

এবং তারপরে আপনি _আপনার অ্যাপ্লিকেশনটির মডিউলটি জানতে চাইতে পারেন :

// Declare it as a dependency of your module
var app = angular.module('app', ['underscore']);

// And then inject it where you need it
app.controller('Ctrl', function($scope, _) {
  // do stuff
});

27
এটি ইতিমধ্যে বিশ্বব্যাপী উইন্ডোতে থাকা অবস্থায় আপনি কেন এটি ইনজেক্ট করবেন তা আমি বুঝতে পারি না।
ওয়াল্টার স্ট্যাবোসজ

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

50
এটি প্রয়োজনীয় যখন আপনি আপনার ফাইলটিতে 'কঠোর ব্যবহার করুন' যুক্ত করেন। আন্ডারস্কোর / লোডাশ সংজ্ঞায়িত না হওয়ায় এটি রেফারেন্স এরর ফেলে দেবে: _ সংজ্ঞায়িত নয় ... আপনাকে এটি ইনজেক্ট করতে হবে, বা উইন্ডোটি ব্যবহার করতে হবে _
শানিমাল

23
হা! আমি ইনজেকশনটি করতে চেয়েছিলাম কারণ এটি দুর্দান্ত, @ শনিমাল আমাকে আসল কারণ দেওয়ার জন্য ধন্যবাদ।
আদিত্য এমপি

10
আপনি পরীক্ষার স্বার্থে _ ইনজেকশন করতেও চাইতে পারেন। টেস্ট স্যুট পরিবেশে আন্ডারস্কোর নির্ভরতা আনতে আপনি কীভাবে যাবেন
সানউইউকং

32

আমি এখানে @ সাতমোরুনের পরামর্শটি বাস্তবায়ন করেছি: https://github.com/andresesfm/angular-:30core-module

এটি ব্যবহার করতে:

  1. আপনি আপনার প্রকল্পের আন্ডারস্কোর.জেগুলি অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন

    <script src="bower_components/underscore/underscore.js">
  2. এটা নাও:

    bower install angular-underscore-module
  3. আপনার মূল ফাইলে কৌণিক-আন্ডারস্কোর-মডিউল.js যুক্ত করুন (index.html)

    <script src="bower_components/angular-underscore-module/angular-underscore-module.js"></script>
  4. আপনার অ্যাপ সংজ্ঞাটিতে নির্ভরতা হিসাবে মডিউল যুক্ত করুন

    var myapp = angular.module('MyApp', ['underscore'])
  5. ব্যবহার করতে, আপনার নিয়ামক / পরিষেবায় একটি ইঞ্জেকড নির্ভরতা হিসাবে যুক্ত করুন এবং এটি ব্যবহারের জন্য প্রস্তুত

    angular.module('MyApp').controller('MyCtrl', function ($scope, _) {
    ...
    //Use underscore
    _.each(...);
    ...

কাজে হাজির হয় না। আমি একটি অপরিবর্তিত ত্রুটি Uncaught ReferenceError: _ is not defined
পেয়েছি

আমি স্পষ্টতা যোগ করেছি: আপনাকে আন্ডারস্কোর.জেএস অন্তর্ভুক্ত করতে হবে। এই সংযোজকটি কেবল আপনাকে এটি পরিষেবাতে ব্যবহার করতে সহায়তা করে। @ সাতমুরুনের উত্তর দেখুন
একত্রিত করুন

31

আমি এটি ব্যবহার:

var myapp = angular.module('myApp', [])
  // allow DI for use in controllers, unit tests
  .constant('_', window._)
  // use in views, ng-repeat="x in _.range(3)"
  .run(function ($rootScope) {
     $rootScope._ = window._;
  });

Https://github.com/angular/angular.js/wiki/Unders સમજ-D dependency- উপর আরও কিছু তথ্যের জন্য অর্ধেক পথ সম্পর্কে আপত্তি দেখুন run


এটি দেখতে সুন্দর তবে আপনার কাছে কি উদাহরণ আছে? আমাকে সমস্ত অক্ষরের উপরের অক্ষরে প্রথম অক্ষরে কেবলমাত্র _ ক্যাপিটালাইজ () ব্যবহার করতে হবে
নট

2
আমার মনে হয় এই কাজ করা উচিত <p>{{ _.capitalize('lalala') }}</p>?
তারে

1
@ এলভারাউত আমি জানি না, কেন চেষ্টা করবেন না? (আমি তখন থেকে রিঅ্যাক্টজেএসে চলে এসেছি)
তারগুলি

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

আমি কী ভুল করেছি তা নিশ্চিত নই তবে আমি কাজ করতে "দর্শনগুলির ব্যবহার" অংশটি পাইনি। কিন্তু পরিষেবাটি নিয়ামকের কাছে এবং তারপরে p ctrl কাজের মাধ্যমে টিপিএল-এ পৌঁছে দেওয়া।
অলিভভিভি

3

আপনি কৌণিক জন্য এই মডিউলটি একবার দেখে নিতে পারেন

https://github.com/floydsoft/angular-underscore


আপনি কীভাবে একটি নিয়ন্ত্রণকারী এই জিনিস লোড করবেন?
chovy

3
আমি সবসময় এমন মডিউলগুলি নিয়ে উদ্বেগ প্রকাশ করি যা বছরের পর বছর আপডেট করা হয়নি
তাহির খালিদ

1

আপনি যদি লোডাশ ব্যবহারে আপত্তি না দেখেন তবে https://github.com/rockabox/ng-lodash এটি লোড্যাশকে সম্পূর্ণভাবে মুড়িয়ে ফেলে তাই এটি একমাত্র নির্ভরতা এবং আপনার অন্য কোনও স্ক্রিপ্ট ফাইল যেমন লোডাশ লোড করার দরকার নেই।

লোডাশ উইন্ডো স্কোপ থেকে পুরোপুরি বন্ধ এবং কোনও "আশা" নেই যে এটি আপনার মডিউলটির আগে লোড হয়েছে।


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