আমি কীভাবে $ সুযোগ। $ ঘড়ি এবং $ সুযোগ।। অ্যাঙ্গুলারজেএস-এ প্রয়োগ করব?


1088

আমি কীভাবে ব্যবহার করব $scope.$watchএবং কী তা বুঝতে পারছি না $scope.$apply। অফিসিয়াল ডকুমেন্টেশন সহায়ক নয়।

যা আমি বিশেষভাবে বুঝতে পারি না:

  • তারা ডিওএম এর সাথে সংযুক্ত আছে?
  • আমি কীভাবে মডেলটিতে ডম পরিবর্তনগুলি আপডেট করতে পারি?
  • তাদের মধ্যে সংযোগ পয়েন্টটি কী?

আমি এই টিউটোরিয়ালটি চেষ্টা করেছিলাম , তবে এটি বোঝার জন্য $watchএবং $applyমঞ্জুর হয়।

কী করবেন $applyএবং $watchকরবেন এবং আমি কীভাবে এগুলি যথাযথভাবে ব্যবহার করব?

উত্তর:


1737

অ্যাঙ্গুলারজেএস এটি বুঝতে কীভাবে কাজ করে সে সম্পর্কে আপনাকে সচেতন হওয়া দরকার।

ডাইজেস্ট চক্র এবং $ সুযোগ

প্রথম এবং সর্বাগ্রে, AngularJS তথাকথিত ডাইজেস্ট চক্রের একটি ধারণা সংজ্ঞায়িত করে । এই চক্রটিকে একটি লুপ হিসাবে বিবেচনা করা যেতে পারে, সেই সময়কালে AngularJS চেক করে যে সমস্ত এস দ্বারা দেখা সমস্ত ভেরিয়েবলের কোনও পরিবর্তন আছে কিনা $scope। সুতরাং আপনি যদি $scope.myVarনিজের কন্ট্রোলারে সংজ্ঞায়িত করে থাকেন এবং এই পরিবর্তনশীলটি দেখার জন্য চিহ্নিত করা হয় , তবে আপনি স্পষ্টভাবে AngularJS কে myVarলুপের প্রতিটি পুনরাবৃত্তির পরিবর্তনগুলি নিরীক্ষণ করতে বলছেন ।

একটি প্রাকৃতিক ফলোআপ প্রশ্ন হবে: সবকিছু $scopeদেখার সাথে যুক্ত কি ? ভাগ্যক্রমে, না। আপনি যদি আপনার প্রতিটি বস্তুর পরিবর্তনের জন্য নজর $scopeরাখেন, তবে দ্রুত ডাইজেস্ট লুপটি মূল্যায়ন করতে কয়েক বছর সময় নেয় এবং আপনি দ্রুত পারফরম্যান্স সংক্রান্ত সমস্যার সমাধান করতে পারেন। এ কারণেই অ্যাংুলারজেএস টিম আমাদেরকে কিছু $scopeপরিবর্তনশীল দেখা হওয়ার হিসাবে ঘোষণা করার দুটি উপায় দিয়েছে (নীচে পড়ুন)।

$ ঘড়ি স্কোপ পরিবর্তনের জন্য শুনতে সহায়তা করে

$scopeভেরিয়েবলকে দেখা হিসাবে ঘোষণার দুটি উপায় রয়েছে ।

  1. এটি আপনার টেম্পলেটে প্রকাশের মাধ্যমে ব্যবহার করে <span>{{myVar}}</span>
  2. $watchপরিষেবার মাধ্যমে ম্যানুয়ালি এটি যুক্ত করে

বিজ্ঞাপন 1) এটি সর্বাধিক সাধারণ পরিস্থিতি এবং আমি নিশ্চিত যে আপনি এটি আগে দেখেছেন তবে আপনি জানেন না যে এটি পটভূমিতে একটি ঘড়ি তৈরি করেছে। হ্যাঁ, এটা ছিল! অ্যাঙ্গুলারজেএস নির্দেশিকা (যেমন ng-repeat) ব্যবহার করাও অন্তর্নিহিত ঘড়ি তৈরি করতে পারে।

বিজ্ঞাপন 2) এভাবে আপনি নিজের ঘড়ি তৈরি করেন । $watchপরিষেবাটি আপনাকে কিছু কোড চালাতে সহায়তা করে যখন এর সাথে যুক্ত কিছু মান $scopeপরিবর্তিত হয়। এটি খুব কম ব্যবহৃত হয়, তবে কখনও কখনও সহায়ক হয় is উদাহরণস্বরূপ, আপনি যদি প্রতিটিবার 'মাইভার' পরিবর্তন করে কিছু কোড চালাতে চান তবে আপনি নিম্নলিখিতটি করতে পারেন:

function MyController($scope) {

    $scope.myVar = 1;

    $scope.$watch('myVar', function() {
        alert('hey, myVar has changed!');
    });

    $scope.buttonClicked = function() {
        $scope.myVar = 2; // This will trigger $watch expression to kick in
    };
}

$ প্রয়োগ ডাইজেস্ট চক্রের সাথে পরিবর্তনগুলি সংহত করতে সক্ষম করে

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

যাইহোক, কখনও কখনও আপনি AngularJS বিশ্বের বাইরে কিছু মান পরিবর্তন করতে চান এবং পরিবর্তনগুলি সাধারণত প্রচার হয় তা দেখতে চান। এটি বিবেচনা করুন - আপনার একটি $scope.myVarমান রয়েছে যা jQuery এর $.ajax()হ্যান্ডলারের মধ্যে সংশোধিত হবে । ভবিষ্যতে এটি এক পর্যায়ে ঘটবে। AngularJS এটি হওয়ার জন্য অপেক্ষা করতে পারে না, যেহেতু এটি jQuery এ অপেক্ষা করার নির্দেশ দেওয়া হয়নি।

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

এই সমস্ত কীভাবে ডিওএম এর সাথে সম্পর্কিত?

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

আপনি অবজেক্টের সাথে $scopeকন্ট্রোলারে সুস্পষ্টভাবে সংযুক্ত করতে পারেন , বা {{expression}}সরাসরি দৃষ্টিতে ফর্ম হিসাবে ঘোষণা করে ।

আমি আশা করি যা এই সমস্ত সম্পর্কে কিছু প্রাথমিক জ্ঞান পরিষ্কার করতে সহায়তা করে।

আরও পড়া:


57
"সমস্ত ular স্কোপের সাথে সংযুক্ত সমস্ত ভেরিয়েবলের কোনও পরিবর্তন আছে কিনা তা কৌণিক পরীক্ষা করে" - আমি মনে করি এটি একেবারেই সঠিক নয়। আমি বিশ্বাস করি যে কেবলমাত্র কৌণিক (নোংরা) চেক $ স্কোপ বৈশিষ্ট্য যা $ ঘড়ি সেট আপ করেছে (দ্রষ্টব্য যে একটি দৃশ্যে {{} using ব্যবহার করে একটি স্বয়ংক্রিয়ভাবে ঘড়ি তৈরি হবে)। স্কোপ পৃষ্ঠায় "স্কোপ $ পারফরম্যান্স বিবেচনাগুলি দেখুন" বিভাগটিও দেখুন ।
মার্ক রাজকক

5
কেস হতে পারে। আমি এটি সম্পর্কে আরও পড়তে এবং আমার উত্তর সম্পাদনা করার জন্য কিছু সময় দেওয়ার চেষ্টা করব।
asukaszBachman

15
@ মারকরাজকোক, আপনি ঠিক বলেছেন আমি আমার জবাব পরিবর্তন করেছি এবং এমন একটি নিবন্ধের দিকে ইঙ্গিত করেছি যা এটি কার্যকরভাবে কীভাবে প্রয়োগ করা হয় shows
asukaszBachman

3
এই ব্যবহার সম্পর্কে কি? ("নিয়ন্ত্রণ হিসাবে" পদ্ধতি)
লিয়ানড্রো

2
"নিয়ন্ত্রণ হিসাবে" ব্যবহারের উপরের তথ্যের উপর কোনও প্রভাব ফেলতে হবে না। এটি.মাইভার ব্যবহার করে মাইভারকে স্কোপে ফেলে।
মার্কাস রাডেল

161

অ্যাঙ্গুলারজেএস-এ, আমরা আমাদের মডেলগুলি আপডেট করি এবং আমাদের মতামত / টেমপ্লেটগুলি ডোমকে "স্বয়ংক্রিয়ভাবে" আপডেট করে (অন্তর্নির্মিত বা কাস্টম নির্দেশাবলীর মাধ্যমে) আপডেট করে।

$ প্রয়োগ এবং $ ঘড়ি, উভয়ই স্কোপ পদ্ধতি হ'ল, ডিওএমের সাথে সম্পর্কিত নয়।

ধারণা পৃষ্ঠা (অধ্যায় "রানটাইম") $ হজম লুপের একটি প্রশংসনীয় ভাল ব্যাখ্যা, $ আবেদন, $ evalAsync কিউ এবং $ ঘড়ি তালিকা রয়েছে। এখানে চিত্রটি সহ যে চিত্রটি দেওয়া হয়েছে:

gest ডাইজেস্ট লুপ

যে কোনও কোডের কোনও সুযোগে অ্যাক্সেস রয়েছে - সাধারণত নিয়ামক এবং নির্দেশিকা (তাদের লিঙ্ক ফাংশন এবং / অথবা তাদের নিয়ন্ত্রণকারী) - অ্যাঙ্গুলারজেএস সেই সুযোগের বিপরীতে মূল্যায়ন করবে এমন একটি " ওয়াচএক্সপ্রেসন " সেট করতে পারে । যখনই AngularJS এর ​​$ ডাইজেস্ট লুপে প্রবেশ করে (বিশেষত, "$ ঘড়ির তালিকা" লুপ) প্রবেশ করে তখন এই মূল্যায়ন হয়। আপনি স্বতন্ত্র স্কোপ বৈশিষ্ট্যগুলি দেখতে পারেন, দুটি বৈশিষ্ট্য একসাথে দেখার জন্য আপনি কোনও ফাংশন সংজ্ঞায়িত করতে পারেন, আপনি অ্যারের দৈর্ঘ্য ইত্যাদি দেখতে পারেন

যখন জিনিসগুলি "AngularJS এর ​​অভ্যন্তরে" ঘটে থাকে - উদাহরণস্বরূপ, আপনি এমন একটি পাঠ্যবক্সে টাইপ করেন যা AngularJS দ্বি-উপাত্ত ডাটাবেন্ডিং সক্ষম করে (যেমন, এনজি-মডেল ব্যবহার করে), একটি $ http কলব্যাক ফায়ার ইত্যাদি $ প্রয়োগ ইতিমধ্যে ডাকা হয়েছিল, তাই আমরা উপরের চিত্রটিতে "AngularJS" আয়তক্ষেত্রের ভিতরে রয়েছি। সমস্ত ওয়াচএক্সপ্রেসিয়েন্সগুলি মূল্যায়ন করা হবে (সম্ভবত একাধিকবার - পরবর্তী কোনও পরিবর্তন সনাক্ত না করা পর্যন্ত)।

যখন জিনিসগুলি "AngularJS এর ​​বাইরে" ঘটে থাকে - যেমন, আপনি কোনও নির্দেশে বাঁধাই () ব্যবহার করেছিলেন এবং তারপরে সেই ইভেন্টটি আগুন ধরিয়ে দেয় যার ফলস্বরূপ আপনার কলব্যাক কল হয় বা কিছু jQuery নিবন্ধিত কলব্যাক ফায়ার হয় - আমরা এখনও "নেটিভ" আয়তক্ষেত্রের মধ্যে আছি। যদি কলব্যাক কোড কোনও $ ঘড়ি দেখছে এমন কোনও কিছু সংশোধন করে, ular ডাইজেস্ট লুপটি চালিত হওয়ার কারণে AngularJS আয়তক্ষেত্রে প্রবেশের জন্য কল করুন $ প্রয়োগ করুন, এবং তাই AngularJS পরিবর্তনটি লক্ষ্য করবে এবং এর যাদু করবে।


5
আমি ধারণাটি বুঝতে পারি, যা আমি বুঝতে পারি না তা হল কীভাবে ডেটা স্থানান্তরিত হয়। আমার কাছে এমন একটি মডেল রয়েছে যা প্রচুর ডেটা সহ একটি বস্তু, আমি এর কিছুটি ডিওএম চালিত করতে ব্যবহার করি। তারপরে এর কিছু পরিবর্তন হয়ে যায়। আমি কীভাবে পরিবর্তিত ডেটাটি সঠিক জায়গায় মডেলটিতে রাখতে পারি? আমি যে উদাহরণটি ব্যবহার করেছি সে হেরফের তৈরি করে এবং শেষ পর্যন্ত সহজভাবে ব্যবহার করে scope.$apply(scope.model), আমি বুঝতে পারি না কোন ডেটা স্থানান্তরিত হয় এবং এটি কীভাবে মডেলের সঠিক জায়গায় স্থানান্তরিত হয়?
ilo

6
কোনও যাদুকরী ডেটা স্থানান্তর হচ্ছে না। সাধারণত কৌণিক অ্যাপ্লিকেশনগুলির সাথে আপনার কৌনিক মডেলগুলি পরিবর্তন করা উচিত, যা পরে ভিউ / ডিওএম আপডেটগুলি চালিত করে। আপনি যদি কৌণিকের বাইরে ডিওএম আপডেট করেন তবে আপনাকে ম্যানুয়ালি মডেলগুলি আপডেট করতে হবে। scope.$apply(scope.model)কেবল scope.modelএকটি কৌণিক অভিব্যক্তি হিসাবে মূল্যায়ন করবে এবং তারপরে একটি gest ডাইজেস্ট লুপ প্রবেশ করবে। আপনি যে নিবন্ধটি উল্লেখ করেছেন তাতে সম্ভবত scope.$apply()যথেষ্ট হবে, যেহেতু মডেলটি ইতিমধ্যে 'নজর রাখা হয়েছে'। স্টপ () ফাংশনটি মডেলটি আপডেট করছে (আমি বিশ্বাস করি যে আপডেটটি স্কোপ.মোডেলের একটি রেফারেন্স) এবং তারপরে $ প্রয়োগ বলা হয়।
মার্ক রাজকক

দেখে মনে হচ্ছে অ্যাঙ্গুলারজেএস ডক্সটি এই উত্তরের অধীনে থেকে সরে গেছে (প্রথম লিঙ্কটির "রানটাইম" বা $watchপৃষ্ঠায় নেই এবং দ্বিতীয় লিঙ্কটি ভেঙে গেছে - এখন পর্যন্ত, যাইহোক)। দুর্ভাগ্যজনকভাবে, সংরক্ষণাগার সংস্করণগুলি যে কোনও async প্রক্রিয়াটি সামগ্রী তৈরি করেছিল তা ক্যাশে করে না।
রাফিন

52

কৌণিক জেএস এই ইভেন্টগুলি-লুপকে প্রসারিত করে , ডাকে কিছু তৈরি করে AngularJS context

ঘড়ি $ ()

প্রতিবার আপনি যখন ইউআইতে কিছু বাঁধেন আপনি $watchএকটি $watchতালিকায় একটি in োকান ।

User: <input type="text" ng-model="user" />
Password: <input type="password" ng-model="pass" />

এখানে আমাদের রয়েছে $scope.user, যা প্রথম ইনপুটটির সাথে আবদ্ধ এবং আমাদের রয়েছে $scope.pass, যা দ্বিতীয়টির সাথে আবদ্ধ। এটি করে আমরা তালিকায় দুটি $watchএস$watch যোগ করি ।

যখন আমাদের টেমপ্লেটটি লোড করা হয়, লিঙ্কিংয়ের পর্যায়ে একে একে, সংকলক প্রতিটি নির্দেশের সন্ধান করবে এবং প্রয়োজনীয় সমস্তগুলি তৈরি করবে $watch

AngularJS সরবরাহ করে $watch, $watchcollectionএবং $watch(true)। নীচে একটি ঝরঝরে চিত্র রয়েছে যা পর্যবেক্ষকদের কাছ থেকে গভীরভাবে নেওয়া তিনটিই ব্যাখ্যা করে ।

এখানে চিত্র বিবরণ লিখুন

angular.module('MY_APP', []).controller('MyCtrl', MyCtrl)
function MyCtrl($scope,$timeout) {
  $scope.users = [{"name": "vinoth"},{"name":"yusuf"},{"name":"rajini"}];

  $scope.$watch("users", function() {
    console.log("**** reference checkers $watch ****")
  });

  $scope.$watchCollection("users", function() {
    console.log("**** Collection  checkers $watchCollection ****")
  });

  $scope.$watch("users", function() {
    console.log("**** equality checkers with $watch(true) ****")
  }, true);

  $timeout(function(){
     console.log("Triggers All ")
     $scope.users = [];
     $scope.$digest();

     console.log("Triggers $watchCollection and $watch(true)")
     $scope.users.push({ name: 'Thalaivar'});
     $scope.$digest();

     console.log("Triggers $watch(true)")
     $scope.users[0].name = 'Superstar';
     $scope.$digest();
  });
}

http://jsfiddle.net/2Lyn0Lkb/

$digest লুপ

যখন ব্রাউজারটি এমন কোনও ইভেন্ট পায় যা AngularJS প্রসঙ্গ দ্বারা পরিচালিত হতে পারে $digestলুপটি ফায়ার করা হবে। এই লুপটি দুটি ছোট লুপ থেকে তৈরি। একটি $evalAsyncসারিতে প্রক্রিয়া করে , এবং অন্যটি প্রক্রিয়াজাত করে $watch list। আমাদের যে $digestতালিকাটি রয়েছে তার মাধ্যমে উইল লুপ করবে$watch

app.controller('MainCtrl', function() {
  $scope.name = "vinoth";

  $scope.changeFoo = function() {
      $scope.name = "Thalaivar";
  }
});

{{ name }}
<button ng-click="changeFoo()">Change the name</button>

এখানে আমাদের কেবল একটি আছে $watchকারণ এনজি-ক্লিক কোনও ঘড়ি তৈরি করে না।

আমরা বোতাম টিপুন।

  1. ব্রাউজারটি একটি ইভেন্ট পায় যা AngularJS প্রসঙ্গে প্রবেশ করবে
  2. $digestলুপ চালানো হবে এবং পরিবর্তন জন্য প্রতি $ ঘড়ি অনুরোধ জানানো হবে।
  3. যেহেতু $watchযা $ স্কোপ.নেম পরিবর্তনের জন্য পর্যবেক্ষণ করছিল তা পরিবর্তনের কথা জানিয়েছে, এটি অন্য $digestলুপকে বাধ্য করবে ।
  4. নতুন লুপটি কিছুই জানায় না।
  5. ব্রাউজারটি নিয়ন্ত্রণ ফিরে পেয়েছে এবং এটি OM স্কোপ.নেমের নতুন মানকে প্রতিফলিত করে ডিওএম আপডেট করবে
  6. এখানে গুরুত্বপূর্ণ বিষয়টি হ'ল প্রতিটি ইভেন্ট যা AngularJS প্রসঙ্গে প্রবেশ করে একটি $digestলুপ চালাবে । এর অর্থ হ'ল প্রতিবার আমরা যখন কোনও ইনপুটে চিঠি লিখি, লুপটি $watchএই পৃষ্ঠাতে প্রতিটি পরীক্ষা করে চলবে ।

$ আবেদন ()

$applyকোনও ইভেন্ট নিক্ষেপ করার সময় আপনি যদি কল করেন তবে এটি কৌণিক-প্রসঙ্গের মধ্যে দিয়ে যাবে, তবে আপনি যদি এটি কল না করেন তবে এটি এর বাইরে চলবে। এটা ঐটার মতই সহজ. অভ্যন্তরীণভাবে লুপটিকে $applyকল$digest() করবে এবং নতুন আপডেট হওয়া মান সহ ডিওএম আপডেট হয়েছে তা নিশ্চিত করার জন্য এটি সমস্ত ঘড়ির উপরে পুনরাবৃত্তি করবে।

$apply()পদ্ধতি সমগ্র উপর প্রহরী আরম্ভ হবে $scopeশৃঙ্খল যেহেতু $digest()পদ্ধতি শুধুমাত্র বর্তমান উপর প্রহরী আরম্ভ হবে $scopeএবং তার childrenযখন উচ্চ-আপের $scopeকোনওটিরই স্থানীয় পরিবর্তনগুলি সম্পর্কে জানতে হবে না, আপনি ব্যবহার করতে পারেন $digest()


18

আমি খুব গভীরভাবে ভিডিও পাওয়া যায়নি যা কভার $watch, $apply, $digestএবং চক্র হজম:

এই ভিডিওগুলিতে ধারণাগুলি ব্যাখ্যা করতে নীচে কয়েকটি স্লাইড ব্যবহার করা হয়েছে (কেবলমাত্র যদি উপরের লিঙ্কগুলি সরানো হয় / কাজ না করে)।

এখানে চিত্র বিবরণ লিখুন

উপরের চিত্রটিতে, "$ স্কোপ ..c" দেখা হচ্ছে না কারণ এটি কোনও ডাটা বাইন্ডিংয়ে (মার্কআপে) ব্যবহৃত হয় না। অন্য দুটি ( $scope.aএবং $scope.b) পর্যবেক্ষণ করা হবে।

এখানে চিত্র বিবরণ লিখুন

উপরের চিত্রটি থেকে: সম্পর্কিত ব্রাউজার ইভেন্টের ভিত্তিতে, কৌণিক জেএস ইভেন্টটি ক্যাপচার করে, ডাইজেস্ট চক্র সম্পাদন করে (পরিবর্তনের জন্য সমস্ত ঘড়ির মধ্য দিয়ে যায়), ঘড়ির কার্য সম্পাদন করে এবং ডিওএম আপডেট করে D ব্রাউজার ইভেন্ট না হলে, ডাইজেস্ট চক্রটি ম্যানুয়ালি $applyবা ব্যবহার করে ট্রিগার করা যেতে পারে $digest

আরো $applyএবং $digest:

এখানে চিত্র বিবরণ লিখুন


17

আছে $watchGroupএবং $watchCollectionপাশাপাশি। বিশেষত, $watchGroupআপনি যদি ডম অবজেক্ট নয় এমন দৃষ্টিতে একাধিক বৈশিষ্ট্যযুক্ত কোনও অবজেক্ট আপডেট করার জন্য কোনও ফাংশনটিতে কল করতে চান তবে উদাহরণস্বরূপ ক্যানভাসে অন্য কোনও ভিউ, ওয়েবজিএল বা সার্ভারের অনুরোধ।

এখানে, ডকুমেন্টেশন লিঙ্ক


আমি সম্পর্কে মন্তব্য করতে হবে $watchCollectionতবে আমি আপনাকে ইতিমধ্যে দেখেছি। অ্যাঙ্গুলারজেএস সাইট থেকে এটি সম্পর্কে ডকুমেন্টেশন এখানে রয়েছে । তারা $watchগভীরতার একটি খুব সুন্দর চাক্ষুষ প্রদান । নোট তথ্য পৃষ্ঠার নীচের কাছাকাছি হয়।
জ্যাবারওয়াকি ডিকম্পোলার

15

বিরক্তিকর এবং নিদ্রাহীন (উপরের দিকে সমস্ত উপরে পড়া শেষ করুন, দুঃখিত তবে সত্য) অত্যন্ত প্রযুক্তিগত, গভীর, বিশদ, এবং শুকনো। আমি কেন লিখছি? অ্যাংুলারজেএস বিশাল কারণ, প্রচুর আন্তঃসংযুক্ত ধারণা যে কাউকে বাদামে পরিণত করতে পারে। আমি প্রায়শই নিজেকে জিজ্ঞাসা করতাম, আমি কি তাদের বুঝতে যথেষ্ট স্মার্ট নই? না! এর কারণ খুব কম লোকই ডাম্মি ভাষায় প্রযুক্তিগত সমস্ত ভাষাডাব্লু শব্দটিকে ব্যাখ্যা করতে পারে ! ঠিক আছে, আমাকে চেষ্টা করুন:

1) তারা সমস্ত ইভেন্ট চালিত জিনিস। (আমি হাসি শুনি, তবে পড়ি)

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

2) $ ঘড়িটি "অন-ক্লিক" হয়।

বিশেষ বিষয়টি হ'ল এটি প্যারামিটার হিসাবে 2 টি ফাংশন নেয়, প্রথমটি ইভেন্ট থেকে মান দেয়, দ্বিতীয়টি মানটিকে বিবেচনায় নিয়ে ...

3) $ ডাইজেস্ট হলেন সেই ব্যক্তি যিনি চারপাশে নিরলস পরীক্ষা করেন , ব্লে-ব্লে-ব্লে তবে একটি ভাল বস।

৪) $ প্রয়োগটি আপনাকে ব্যর্থ প্রমাণ হিসাবে যেমন ম্যানুয়ালি এটি করতে চান তখন উপায় দেয় (যদি অন-ক্লিকটি লাথি না দেয় তবে আপনি এটি চালাতে বাধ্য করেন))

এখন, এটি চাক্ষুষ করা যাক। ধারণাটি আরও সহজ করে তুলতে এটি চিত্র করুন:

রেস্তোরা তে,

- ওয়েটার্স

গ্রাহকদের কাছ থেকে আদেশ নেওয়ার কথা, এটি এই

$watch(
  function(){return orders;},
  function(){Kitchen make it;}
);

- সমস্ত ওয়েটাররা জাগ্রত, গ্রাহকদের কাছ থেকে পরিবর্তনের যে কোনও চিহ্নের জন্য প্রতিক্রিয়াশীল তা নিশ্চিত করতে চারপাশে ম্যানেজার চলছে। এই$digest()

- মালিকানার অনুরোধের ভিত্তিতে সবাইকে চালানোর চূড়ান্ত ক্ষমতা রয়েছে, এটি$apply()


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