javascript - خطأ "لا يمكن العثور على متغير" مع Rails 3.1 و Coffeescript




ruby-on-rails (2)

لدي وجهات نظر في طلبي تشير إلى ملف application.js الخاص بي والذي يحتوي على الوظائف التي أستخدمها عبر تطبيقي.

أنا فقط تثبيت المرشح الإصدار Rails 3.1 بعد استخدام الإصدار الحافة 3.1. حتى قمت بتثبيت RC لم أواجه أي مشاكل ولكن الآن أنا أتلقى هذا الخطأ:

ReferenceError: لا يمكن العثور على متغير: indicator_tag

indicator_tag هي وظيفة قمت بتعريفها في application.js. الاختلاف الوحيد الذي ألاحظه في ملف javascript هو أنه يتم الآن التفاف كل وظائفي في:

(function() { ... }).call(this);

أنا أفهم هذا هو النطاق المتغير؟ ولكن هل يمكن منع صفحاتي من استخدام هذه المتغيرات؟ وقبل أن يسأل أي شخص ، لقد تأكدت من أن مسارات جافا سكريبت صحيحة في علامات التضمين الخاصة بي.


بشكل افتراضي ، يتم تصنيف كل ملف من ملفات PDF إلى إغلاق. لا يمكنك التفاعل مع الوظائف من ملف مختلف ، إلا إذا قمت بتصديرها إلى متغير عمومي. أوصي بعمل شيء مثل هذا:

فوق كل ملف coffeescript ، أضف خطًا مثل

window.Application ||= {}

سيضمن ذلك وجود تطبيق عالمي مسمى في جميع الأوقات.

الآن ، لكل وظيفة تحتاج إلى الاتصال من ملف آخر ، قم بتعريفها على أنها

Application.indicator_tag = (el) ->
  ...

واتصل بهم باستخدام

Application.indicator_tag(params)

حل Dogbert هو طريقة رائعة للذهاب إذا كان لديك JS back-end متطور للغاية. ومع ذلك ، هناك حل أبسط بكثير إذا لم يكن لديك سوى عدد قليل من الوظائف التي تعمل بها. ما عليك سوى إضافتها مباشرةً إلى كائن النافذة ، كما يلي:

window.indicator_tag = (el) ->
  ...

ثم يمكنك استخدام وظائفك من أي مكان دون الحاجة إلى إلغائها في كائن آخر.







coffeescript