سؤال

لقد قرأت هذا يُطلق مساعدو قالب النيزك عدة مرات وحاولت إعادة إنتاج هذا دون أي مجموعات المعنية.

لذلك حصلت على مساعد مثل هذا:

Template.myTemplate.helpers({
    test: function(){
        console.log("Fired");
        return {
            name : "Foo"
        };
    }
});

والقالب يبدو هكذا:

<template name="myTemplate">
    {{test.name}}{{test.name}}
</template>

كنت أتوقع في وحدة التحكم أن أرى "تم إطلاقه" مرة واحدة فقط، ولكن تم استدعاء المساعد مرتين بالفعل؟لذا، إذا كان مساعدي يصل إلى المجموعة ويحصل على البيانات من هناك، ففي كل مرة أستخدم {{helper.key}} فإنه يقوم بإجراء استعلام؟هل هذه هي الطريقة التي ينبغي أن تعمل؟

هل كانت مفيدة؟

المحلول

نعم أنت على حق، سيقوم نظام القالب بالاتصال بالمساعد في كل مرة تستخدمه في القالب الخاص بك.

أعتقد أن ما تسأله هو ما إذا كان هذا فعالاً بالنسبة للمجموعات حيث يتم استدعاؤها مرارًا وتكرارًا.

هذا هو السبب في النيزك .find() إرجاع المؤشر الذي هو نوع من ذاكرة التخزين المؤقت.يمكنك رؤية هذا إذا حاولت العثور على شيء به .find(), ، سوف تحصل على كائن ولكن ليس بياناتك في الواقع.يقوم المؤشر بجلب البيانات فقط عند الحاجة إليها، لذا فهو ليس غير فعال كما قد يبدو.

إلحاق .fetch() في الواقع يجلب البيانات ولا يستخدم ذاكرة التخزين المؤقت هذه، وهذا هو السبب في أنها أقل كفاءة ويقترح في كثير من الأحيان عدم استخدامها كذاكرة تخزين مؤقت return قيمة المساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top