vs নির্দেশিকা পরীক্ষায় বনাম $ ডাইজেস্ট প্রয়োগ করুন


98

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

আমি এই দুটি নিদর্শন দেখেছি:

scope.$apply(function() {
    scope.myAttribute = true;
});

এবং

scope.myAttribute = true;
scope.$digest();

তাদের মধ্যে পার্থক্য কী, এবং কোনটি ভাল এবং কেন?

উত্তর:


207

scope.$digest()বর্তমান স্কোপ এবং এর সমস্ত বাচ্চাদের উপরও নজরদারিদের আগুন জ্বালিয়ে দেবে। scope.$applyপাস ফাংশন এবং রান মূল্যায়ন করবে $rootScope.$digest()

প্রথমটিটি দ্রুততর, কারণ বর্তমান স্কোপ এবং এর শিশুদের জন্য প্রহরীদের মূল্যায়ন করা দরকার। যেমন পাহারাদাররা নির্ণয় করা দরকার দ্বিতীয়, ধীর $rootScopeএবং সব সন্তানের সুযোগ।

যখন কোনও পর্যবেক্ষকের মধ্যে ত্রুটি দেখা দেয় এবং আপনি ব্যবহার করেন scope.$digest, $exceptionHandlerসেবার মাধ্যমে এটি পরিচালনা করা হয় না , তাই আপনাকে নিজে ব্যতিক্রম হ্যান্ডেল করতে হবে। অভ্যন্তরীণভাবে scope.$applyএকটি try-catchব্লক ব্যবহার করে এবং এতে সমস্ত ব্যতিক্রম পাস করে $exceptionHandler


4
হবে $digestআরো সুযোগ সন্তান আহ্বান করা হবে?
পিলাউ

16
এটি বিভ্রান্তিকর হতে পারে। $digestকেবল বর্তমান স্কোপগুলিতে নজরদারি চালকই নয়, এর সমস্ত শিশুদের জন্যও on
TasseKATT

@ টাসেক্যাট, আমি মনে করি আপনার মন্তব্য যা বলছে তা আমি ক্যাপচার করেছি।
অ্যাক্টিভিডেক

12

ডকুমেন্টেশনে যেমন উল্লেখ করা হয়েছে $ ডাইজেস্ট চক্রটি আপনি যে কোনও সময় তৈরি করেন $scope.$applyসুযোগ হিসাবে বিকাশকারী গাইড হিসাবে

অভিব্যক্তিটি মূল্যায়ন করার পরে, $ প্রয়োগ পদ্ধতি একটি gest ডাইজেস্ট সম্পাদন করে। $ ডাইজেস্ট পর্যায়ে স্কোপটি $ ঘড়ের সমস্ত অভিব্যক্তি পরীক্ষা করে এবং পূর্বের মানের সাথে তাদের তুলনা করে।

এবং স্কোপ এপিআই ডকুমেন্টেশন অনুসারে

সাধারণত আপনি সরাসরি নিয়ন্ত্রকদের বা নির্দেশে ডাইজেস্ট () কল করেন না। পরিবর্তে $ প্রয়োগ () (সাধারণত নির্দেশাবলীর মধ্যে থেকে) একটি কল একটি gest ডাইজেস্ট () জোর করে।

সুতরাং আপনার স্পষ্টভাবে কল করা উচিত নয় $digest, আপনি কল করার $applyপদ্ধতিটি ডাইজেস্ট চক্রকে ট্রিগার করবে।


8
এটি সত্য নয় কারণ ডাইজেস্ট বেশিরভাগ ক্ষেত্রেই যথেষ্ট যেখানে কেবলমাত্র বর্তমান সুযোগ এবং এর শিশুদের মূল্যায়ন করা দরকার। এটি সত্য যে "স্কোপ। calls কল প্রয়োগ করুন intern অভ্যন্তরীণভাবে ডাইজেস্ট তবে এটি মনে রাখা খুব জরুরি যে এটি শেষ হবে $ রুটস্কোপ calling ডাইজেস্ট () এবং তাই খুব ভারী
শ্রীবত্স হরিশ ভেঙ্কটরমণ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.