দ্রুপালের সংযুক্তি আচরণ: সমস্ত নতুন লোড হওয়া সামগ্রীতে প্রতিক্রিয়া?


12

আমি দুটি ভিন্ন মডিউল পেয়েছি যা বিভিন্ন উপায়ে একসাথে কাজ করে। তারা একসাথে যে কাজ করে সেগুলির মধ্যে একটি হ'ল মডিউল AJAX এর মাধ্যমে সামগ্রী লোড করে এবং মডিউল বি এর ইভেন্ট শ্রোতাদের লোড হওয়া সামগ্রীতে সংযুক্ত করা দরকার।

যাইহোক, এটি উপস্থিত হয় যে কন্টেন্টটি AJAX এর মাধ্যমে মডিউল A দ্বারা লোড করা হয়, কেবলমাত্র Drupal.behaviours.a এর 'সংযুক্তি' ফাংশনটি অনুরোধ করা হয়, এবং দ্রুপাল.বেহেভিয়র্স.বি'র 'সংযুক্তি' ফাংশনটি নয় । উভয় ফাংশন পৃষ্ঠা লোডে অনুরোধ করা হয়, তবে পরবর্তী এজেএক্স সামগ্রী সামগ্রী লোড করার জন্য নয়।

// This runs every time module A loads new content.
Drupal.behaviors.a = {
  attach: function(context, settings) {
    alert('a:attach');
  }
}

// This only runs on page load, but never when module A loads new content.
Drupal.behaviors.b = {
  attach: function(context, settings) {
    alert('b:attach');
  }
}    

আমি কীভাবে Drupal.behaviours.b এর 'সংযুক্তি' ফাংশনটি তৈরি করব প্রতিবার কোনও মডিউল নতুন সামগ্রী লোড করে?


আপনি কি Drupal.attachBehaviors();আজাক্স সাফল্যের কলব্যাক যোগ করার চেষ্টা করেছেন ?
ক্লাইভ

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

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

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

1
যদি আপনি চান একটি ক্যাচ-অল সমাধান $('body').ajaxSuccess(Drupal.attachBehaviors);সম্ভবত কাজ করবে
ক্লাইভ

উত্তর:


4

এতে মন্তব্য থেকে এটি misc/drupal.jsব্যাখ্যা করে যে এটি কীভাবে কাজ করবে বলে মনে করে:

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

2

এটিকে দ্রুপাল.বিহেভিয়ার.বিতে যুক্ত করার চেষ্টা করুন:

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