Backbone: امنح model.set خيار تحليل

تم إنشاؤها على ٢١ يونيو ٢٠١٣  ·  13تعليقات  ·  مصدر: jashkenas/backbone

يتيح لك نظير المجموعة للمجموعة توفير خيار "تحليل" لتشغيل وظيفة المحلل اللغوي قبل معالجة كائن المجموعة. يكون هذا مفيدًا عندما يكون لديك بيانات تمهيدية تريد إنشاء مجموعة منها ، حيث لن تمر عبر وظيفة الجلب.

هل هناك سبب لعدم قيام كائن النموذج بتوفير نفس الخيار للمجموعة المتوازية؟ يبدو لي أنه تم حذفه غير متسق.

تحرير: عند إجراء مزيد من الفحص ، لا تزال إعادة التعيين تحترم خيار التحليل.

duplicate

التعليق الأكثر فائدة

أنا بالفعل أستخدم model.set (model.parse (data)) الآن لأن خيار التحليل مفقود. سيكون من الرائع حقًا تحقيق الاتساق مع collection.reset وما إلى ذلك.

ال 13 كومينتر

أود أن أرجع إلى

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

هذا يبدو جيدًا ، لكن الحالة التي ستتسبب في حدوث عقبة في الجزء العلوي من رأسي هي parse مع defaults ( لاحظ ترتيب الأحداث هنا ). أرغب في رؤية العلاقات العامة مع أفكار التنفيذ الخاصة بك.

رائع ، أود أن أجربها.

كنت في الواقع سأفتح تذكرة لهذا أيضًا - ولكن بعد ذلك صادفت # 2013 ... على الرغم من أنني أفترض أن ذلك كان قبل أن يكون هناك Collection#set .

أتفق مع wookiehangover على أن تكافؤ واجهة برمجة التطبيقات سيكون أمرًا model.set(model.parse(data)) كما هو مذكور في تذكرة أخرى).

tgriesser لا أعرف كيف فاتني هذه المشكلة! أتفق مع هذه المناقشة لحالة الاستخدام هذه ، لكنني أعتقد أن حالة الاستخدام الأكثر إقناعًا تتعلق بتحليل بيانات التمهيد (بالإضافة إلى التحليل المتداخل ، وهو ما أفعله أيضًا). لقد استخدمت أيضًا نفس الحل البديل ، ولكن كما قلت ، الآن بعد أن أصبح هناك Collection#set ، هناك الآن أيضًا حجة تكافؤ.

ما هي حالة الاستخدام الفعلية للحاجة إلى هذا؟

إذا كنت ترغب في استدعاء set على نموذج موجود حيث يحتوي الكائن على بيانات متداخلة ، فستقوم بسحب النموذج في parse . أردت هذه الوظيفة في عدة مناسبات.

class Book extends Models.Document
   constructor: ->
      <strong i="8">@info</strong> = new InfoModel()
      <strong i="9">@chapters</strong> = new ChaptersCollection()
      super

   parse: (attrs, options) ->
      @info.set(attrs.info, options)
      @chapters.set(attrs.chapters, options)
      _.omit(attrs, 'info', 'chapters')

الآن يمكنك القيام بذلك:

book.set({
  title: 'title',
  info: {
    some: data
    someNested: {
        otherData: ...
    }
  },
  chapters: [{...}, {...}]
}, {parse: true});

ويجب أن يعمل ... (نعم ، model.set(model.parse( يعمل ، لكن من الأسهل أن يكون لديك نفس واجهة برمجة التطبيقات لتحليل البيانات المتداخلة في المجموعات والنماذج) ... على الرغم من إصدار # 2623 ، فإنه يعمل فقط حتى الآن تحت.

هل لدى أي شخص فكرة حول كيفية عمل هذا التغيير مع الإعدادات الافتراضية؟ وبدون التحليل المزدوج؟

لجعله يعمل مع الإعدادات الافتراضية ، قمت بإنشاء options.defaults ، تم تعيينه في وظيفة التهيئة للتمرير إلى set ، بحيث يمكن تطبيقها بعد خطوة التحليل. لا أعرف ما إذا كان هذا هو قرار التصميم الذي نريده ، لكنني لم أتمكن من التفكير في حل بديل.

دعنا ننتقل هذه المحادثة إلى العلاقات العامة المفتوحة ...

هل هناك أي تحديث على ذلك؟

أنا بالفعل أستخدم model.set (model.parse (data)) الآن لأن خيار التحليل مفقود. سيكون من الرائع حقًا تحقيق الاتساق مع collection.reset وما إلى ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات