문제

백본, 요구 사항 및 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();
    });
})

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

  });
});

내 웹 사이트의 디렉토리에 코드를 업로드했습니다. http://rickdoorakkers.nl/np2다음 단계를 거치면 문제가 나타납니다.

  1. 프로젝트를 추가하십시오
  2. 이름이 다른 두 번째 프로젝트를 추가하십시오
  3. 클릭하여 프로젝트를 열고 값을 변경하고 저장하십시오.
  4. 보시다시피 프로젝트 추가 이벤트가 시작되고 변경 대신 프로젝트가 추가되었습니다.
  5. 이 같은 문제는 또한 서로 후 2 개의 프로젝트를 변경하려고 할 때 발생합니다. 첫 번째 프로젝트는 편집됩니다.

내가 뭘 잘못하고 있는지 말해 줄 수있는 사람이 있습니까?

감사!

도움이 되었습니까?

해결책

RIDO, 귀하의 코드는 몇 가지를 혼합하는 방식으로 인해 저를 읽기가 어렵고 백본에 대한 일반적인 규칙을 따르지 않습니다.

당신의 특정 문제에 대해, 나는 당신이 편집보기와 신체에 대한 새로운 견해 (el : body)를 모두 묶는 것, 이벤트 제출에 응답하고, 당신은보기를 명확하게 정리하지 않는다는 것입니다. 생각한다 프로젝트를 추가 한 다음 편집 할 때마다 Add View는 여전히 메모리에 있으며, 제출 이벤트에 여전히 제출되며 편집 대신 새 이름으로 Call = 새 프로젝트에 여전히 응답합니다.

추가 후 중지에 대한 호출을 추가하여 더러운 방식으로 고치는 것은 '쉬운'것이지만, 실제 문제는 신체에 바인딩하고 백본 라우터 및 설명서 해시 제어 + 기타 이상한 패턴을 가져 오는 것입니다. 5 줄마다 컬렉션 (앱 시작시 하나만 만들어서 항상 사용할 수 있습니다! 여기서 로컬 스터리지이므로 중요하지 않지만 원격 저장소로 이동하면 후회합니다 ... Fetch () 컬렉션을 재설정하고 전체 재 장전을 수행하십시오!). jQuery Mobile에 대한 관심 없이이 글을 다시 작성하려고 시도하고 백본으로 작동하도록 노력할 것입니다. Router + 단일 컬렉션 + 신체에 바인딩하지 않고 대신 뷰를 만들고 신체 / 제거에 추가하십시오. 끝났을 때? 버그가 덜 이상하고 추적하기가 더 쉬울 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top