سؤال

لدي بعض المشكلات في العمود الفقري الخاص بي ، مطالبة بتطبيق الهاتف المحمول و jquery. عندما أستخدم طريقة عرض النموذج مرتين ، يتم إطلاق حدث إرسال النموذج مرتين. تتم إضافة كل طريقة عرض جديدة إلى الجسم وسيتم إزالة العرض السابق. لذلك أستخدم هذا الرمز في ملف app.js الخاص بي:

$(document).on("mobileinit", function () {
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;

    $(document).on('pagehide', 'div[data-role="page"]', function (event, ui) {
        $(event.currentTarget).remove();
    });
})

جهاز التوجيه

define([
  'jquery',
  'backbone',
  'views/projects/ProjectsView',
  'views/projects/AddProjectView'
], function($, Backbone, ProjectsView, AddProjectView) {

  return Backbone.Router.extend({

    routes: {
      'addProject': 'addProject',
      'editProject/:projectId': 'editProject', 
      '*actions': 'showProjects' // Default
    },

    addProject: function() {
      new AddProjectView().render();
    },
    editProject: function(projectId) {
      require([
        "views/projects/EditProjectView", 
        "collections/ProjectsCollection", 
        "models/ProjectModel"
      ], function (EditProjectView, ProjectsCollection, ProjectModel) {
        var projectsCollection = new ProjectsCollection();
        projectsCollection.fetch();

        var project = projectsCollection.get(projectId);
        if (project) {
          var view = new EditProjectView({model: project, projectsCollection: projectsCollection});
          view.render();
        }
      });
    },


    showProjects: function() {
      new ProjectsView().navigate();      
    }

  });
});

لقد قمت بتحميل الكود الخاص بي إلى دليل على موقع الويب الخاص بي: http://rickdoorakkers.nl/np2إذا ذهبت من خلال الخطوات التالية ، فسترى المشكلة:

  1. أضف مشروعا
  2. أضف مشروعًا ثانيًا يحمل اسمًا مختلفًا
  3. افتح مشروعًا من خلال النقر عليه وتغيير القيم وحفظه
  4. كما يمكنك أن ترى حدث إضافة مشروع يتم إطلاقه ويتم إضافة مشروع بدلاً من تغييره.
  5. تحدث هذه المشكلة نفسها أيضًا عند محاولة تغيير مشروعين بعد بعضهما البعض. تم تحرير المشروع الأول بعد ذلك.

هل هناك شخص يمكن أن يخبرني بما أفعله خطأ؟

شكرًا!

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

المحلول

Rido ، من الصعب حقًا قراءة الكود الخاص بك بسبب الطريقة التي تخلط بها بعض الأشياء وعدم اتباع أي من المؤتمرات المعتادة للعمود الفقري.

بالنسبة لمشكلتك المحددة ، لدي شعور بالمشكلة هي أنك تربط كل من عرض التحرير والمنظر الجديد للجسم (EL: Body) ، كلاهما يستجيب لتقديم الحدث ، ولا تنظف وجهات النظر بشكل واضح ، لذلك أنا فكر في كلما قمت بإضافة مشروع ثم تحريره ، لا يزال عرض الإضافة في الذاكرة ، ولا يزال مرتبطًا بحدث إرسال ولا يزال يجيب على المكالمة = مشروع جديد بالاسم الجديد ، بدلاً من التحرير.

من السهل "الإصلاح بطريقة قذرة ، عن طريق إضافة مكالمة لإيقافها بعد الإضافة ، ولكن المشكلة الحقيقية هي أنك ملزم بالجسم ، وخلط توجيه العمود الفقري والتحكم في التجزئة اليدوية + أنماط غريبة أخرى ، مثل الجلب المجموعة كل 5 أسطر (يمكنك فقط إنشاء واحدة في بداية التطبيق واستخدامها دائمًا! هنا هي LocalStorage بحيث لا يهم ولكن إذا انتقلت إلى سعة تخزين عن بُعد ، فسوف تندم على ذلك ... () إعادة ضبط المجموعة وقم بإعادة التحميل الكامل!). هل يمكنني أن أقترح عليك أن تحاول إعادة كتابة هذا دون الاهتمام بالهاتف المحمول ومحاولة جعلها تعمل مع العمود الفقري. Router + مجموعة واحدة + غير ملزمة للجسم ولكن بدلاً من ذلك ، قم بإنشاء طرق العرض على الطيران وإلحاقها بالجسم / إزالة عندما تنجز؟ سترى أن الأخطاء ستكون أقل غرابة وأسهل في التتبع.

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