angularjs - $ রুটস্কোপ। $ সম্প্রচার বনাম $ স্কোপ। mit নির্গত




angularjs-scope (4)

কোনও পরিষেবাতে আরএক্সজেএস ব্যবহার করুন

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

কৌণিকের জন্য আরএক্সজেএস এক্সটেনশনগুলির সাথে একটি পরিষেবা তৈরি করুন।

<script src="//unpkg.com/angular/angular.js"></script>
<script src="//unpkg.com/rx/dist/rx.all.js"></script>
<script src="//unpkg.com/rx-angular/dist/rx.angular.js"></script>
var app = angular.module('myApp', ['rx']);

app.factory("DataService", function(rx) {
  var subject = new rx.Subject(); 
  var data = "Initial";

  return {
      set: function set(d){
        data = d;
        subject.onNext(d);
      },
      get: function get() {
        return data;
      },
      subscribe: function (o) {
         return subject.subscribe(o);
      }
  };
});

তারপরে পরিবর্তনগুলি সাবস্ক্রাইব করুন।

app.controller('displayCtrl', function(DataService) {
  var $ctrl = this;

  $ctrl.data = DataService.get();
  var subscription = DataService.subscribe(function onNext(d) {
      $ctrl.data = d;
  });

  this.$onDestroy = function() {
      subscription.dispose();
  };
});

ক্লায়েন্টরা DataService.subscribe সহ পরিবর্তনের জন্য সাবস্ক্রাইব করতে পারবেন এবং প্রযোজকরা DataService.subscribe সাহায্যে পরিবর্তনগুলি DataService.subscribe পারবেন।

পিএলএনকেআর- এর ডেমো

এখন যেহেতু $broadcast এবং $rootScope.$broadcast মধ্যে পারফরম্যান্স পার্থক্যটি $rootScope.$broadcast $scope.$emit $rootScope.$broadcast পছন্দ করার কোনও কারণ আছে কি?

তারা পৃথক, হ্যাঁ।

$emit স্কোপ হায়ারার্কির উপরে (উপরের দিকে) সীমাবদ্ধ - এটি আপনার ডিজাইনের সাথে মানানসই হতে পারে তবে এটি আমার কাছে বরং এক স্বেচ্ছাসেবী বাধা বলে মনে হয়।

$rootScope.$broadcast শুনতে পছন্দ করে এমন সমস্ত $rootScope.$broadcast কাজ করে যা আমার মনে আরও বোধকরি বাধা।

আমি কিছু অনুপস্থিত করছি?

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

উত্তরের জবাবে স্পষ্ট করার জন্য, প্রেরণের দিকনির্দেশটি আমি ইস্যু করছি না। $scope.$emit ইভেন্টটি উপরের দিকে প্রেরণ করে এবং $scope.$broadcast - নীচের দিকে। তবে কেন সবসময় $rootScope.$broadcast ব্যবহার করে সমস্ত উদ্দেশ্যগ্রস্থ শ্রোতাদের কাছে পৌঁছানোর জন্য?


@ এডি জিজ্ঞাসা করা প্রশ্নের সঠিক উত্তর দিয়েছেন। তবে আমি পাব / সাব এর আরও দক্ষ পদ্ধতির ব্যবহারের দিকে দৃষ্টি আকর্ষণ করতে চাই।

যেমন this উত্তরটি সূচিত করে,

Approach সম্প্রচার / approach পদ্ধতির ভয়াবহভাবে দক্ষ নয় কারণ এটি সমস্ত স্কোপগুলিতে সম্প্রচারিত হয় (হয় একদিকে বা স্কোপ শ্রেণিবদ্ধের উভয় দিক)। যদিও পাব / সাব অ্যাপ্রোচ অনেক বেশি সরাসরি। কেবল গ্রাহকরা ইভেন্টগুলি পান তাই এটি কার্যকর করার জন্য এটি সিস্টেমের প্রতিটি সুযোগে যায় না।

আপনি angular-PubSub কৌণিক মডিউলটি ব্যবহার করতে পারেন। একবার আপনি নিজের অ্যাপ্লিকেশন নির্ভরতার সাথে PubSub মডিউল যুক্ত PubSub আপনি ইভেন্ট / বিষয়গুলি সাবস্ক্রাইব ও সাবস্ক্রাইব করতে PubSub পরিষেবাটি ব্যবহার করতে পারেন।

সাবস্ক্রাইব করা সহজ:

// Subscribe to event
var sub = PubSub.subscribe('event-name', function(topic, data){

});

প্রকাশ করা সহজ

PubSub.publish('event-name', {
    prop1: value1,
    prop2: value2
});

সাবস্ক্রাইব করতে, PubSub.unsubscribe(sub); ব্যবহার করুন PubSub.unsubscribe(sub); বা PubSub.unsubscribe('event-name');

দ্রষ্টব্য মেমরি ফাঁস এড়াতে সাবস্ক্রাইব করতে ভুলবেন না।


তারা একই কাজ করছে না: scope $broadcast স্কোপ হায়ারার্কির মধ্য দিয়ে একটি ইভেন্ট উপরের দিকে প্রেরণ করে, এবং $broadcast সমস্ত ইভেন্টের স্কোপে নীচের দিকে একটি ইভেন্ট প্রেরণ করে।


$ সুযোগ। mit নির্গত: এই পদ্ধতিটি ঘটনাটি উপরের দিকের দিকে প্রেরণ করে (শিশু থেকে পিতামাতার কাছে)

$ সুযোগ। $ সম্প্রচার: পদ্ধতিটি সমস্ত শিশু নিয়ামককে নীচের দিকে (পিতামাতার থেকে সন্তানের কাছে) ইভেন্টটি প্রেরণ করে।

$ সুযোগ। $ অন: কিছু ইভেন্ট শোনার জন্য পদ্ধতিটি নিবন্ধভুক্ত করে। এই ইভেন্টটি শুনছেন এমন সমস্ত কন্ট্রোলারই ব্রডকাস্টের নোটিফিকেশন পান বা শিশু-পিতামাতার শ্রেণিবিন্যাসের ক্ষেত্রে উপযুক্ত এমন জায়গাগুলির উপর ভিত্তি করে নির্গত হয়।

To এমিট ইভেন্টটি ইভেন্টটি শুনছেন এমন $ সুযোগের মধ্যে যে কোনও একটি দ্বারা বাতিল করা যেতে পারে।

অন ​​"স্টপপ্রোপেশন" পদ্ধতি সরবরাহ করে। এই পদ্ধতিটি কল করে ইভেন্টটিকে আরও প্রচার থেকে থামানো যেতে পারে।

প্লাঙ্কার: https://embed.plnkr.co/0Pdrrtj3GEnMp2UpILp4/ ://e એમ્બેડ.plnkr.co/0Pdrrtj3GEnMp2UpILp4/

ভাইবোনের স্কোপগুলির ক্ষেত্রে (যে স্কোপগুলি সরাসরি পিতামাতার বাচ্চার শ্রেণিবিন্যাসে নেই) তারপরে $ নির্গত এবং $ সম্প্রচার ভাইবোন স্কোপের সাথে যোগাযোগ করবে না।

আরও তথ্যের জন্য দয়া করে http://yogeshtutorials.blogspot.in/2015/12/event-based-communication-between-angularjs-controllers.html





angularjs-scope