Frage

Ich habe einige Probleme mit meinem Rückgrat, fordertjs & jQuery Mobile Anwendung. Wenn ich eine Formularansicht 2 -fache des Formulars -Subies -Ereignisses verwende, wird zweimal abgefeuert. Jede neue Ansicht wird dem Körper hinzugefügt und die vorherige Ansicht wird entfernt. Dafür verwende ich diesen Code in meiner App.js -Datei:

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

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

Router.js

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();      
    }

  });
});

Ich habe meinen Code auf meiner Website in ein Verzeichnis hochgeladen: http://rickdoorakkers.nl/np2Wenn Sie die folgenden Schritte durchlaufen, sehen Sie das Problem:

  1. Füge ein Projekt hinzu
  2. Fügen Sie ein zweites Projekt mit einem anderen Namen hinzu
  3. Öffnen Sie ein Projekt, indem Sie darauf klicken, die Werte ändern und speichern
  4. Wie Sie sehen können, wird das Hinzufügen eines Projekts gestartet, und es wird ein Projekt hinzugefügt, anstatt sich geändert zu haben.
  5. Das gleiche Problem tritt auch auf, wenn Sie versuchen, 2 Projekte nacheinander zu ändern. Das erste Projekt wird dann bearbeitet.

Gibt es jemanden, der mir sagen kann, was ich falsch mache?

Vielen Dank!

War es hilfreich?

Lösung

Rido, Ihr Code ist wirklich schwer für mich zu lesen, weil er ein paar Dinge zusammenmischt und keiner der üblichen Konventionen für Rückgrat befolgt.

Für Ihr spezifisches Problem habe ich das Gefühl, dass Sie sowohl die Bearbeitungsansicht als auch die neue Sicht auf den Körper (EL: Body), beide auf die Einreichung des Ereignisses reagieren, und Sie die Ansichten nie klar aufräumen, also ich denken Wenn Sie ein Projekt hinzufügen und es dann bearbeiten, befindet sich die Ansicht hinzufügen noch im Speicher, immer noch an das Sendenereignis gebunden und beantwortet das CALL = New Project mit dem neuen Namen, anstatt zu bearbeiten.

Es ist "einfach", schmutzig zu reparieren, indem Sie nach dem Hinzufügen einen Anruf hinzufügen Die Sammlung alle 5 Zeilen (Sie können zu Beginn der App nur eine erstellen und immer verwenden! Hier ist es Lokalstorage, also spielt es keine Rolle, aber wenn Sie jemals zu einem Remote -Speicher wechseln, werden Sie sie bereuen ... abrufen () Setzen Sie die Sammlung zurück und machen Sie eine vollständige Nachlade!). Darf ich vorschlagen, dass Sie versuchen, dies neu zu schreiben, ohne sich um JQuery Mobile zu kümmern, und einfach versuchen, es mit Backbone zu arbeiten. wenn du fertig bist? Sie werden sehen, dass die Fehler weniger seltsam und einfacher zu verfolgen sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top