2013-08-07 3 views
3

어떤 이유로 든 listView 페이지에서 항목을 선택한 후에 올바른 ID가 전달되는 것을 볼 수는 있지만 내 코드는 항상 동일한 모델을 반환합니다. model.id이 다른 곳백본 fetch()는 항상 동일한 모델을 반환합니다.

// main.js (relavent function) 

    venueDetails: function (id) { 
     // here, id is correct 
     var venue = new Venue({_id: id}); 
     venue.fetch({success: function(){ 
      // here, the id of venue is changed for some reason 
      console.log(venue.id); 
      $("#content").html(new VenueView({model: venue}).el); 
     }}); 
     this.headerView.selectMenuItem(); 
    }, 

모델 , 사진에서

// model.js (relavent model) 

    var base = 'http://localhost:3000'; 

    window.Venue = Backbone.Model.extend({ 
     urlRoot: base+"/venues", 
     idAttribute: "_id", 
    }); 

    window.VenueCollection = Backbone.Collection.extend({ 
     model: Venue, 
     url: base+"/venues?populate=true" 
    }); 

, 당신은 볼 수 뭐죠 URL에 enter image description here

편집 : 추가 라우터 매핑

var AppRouter = Backbone.Router.extend ({

+0

당신이 있습니까 적절한 GET 호출 및 응답을 보는가? 그물 판넬을 방화 녀석과 함께 사용해보십시오. – dierre

+0

흠, 서버 API에 요청할 때까지는 잘못된 ID를 전달합니다. 어떤 방법으로 이드를 대체 할 수 있는지 보도록 재정의해야합니까? – remotevision

+1

모델 초기화 후 console.log (venue.id) 만 사용하십시오. 잘못된 이드를 인쇄하고 있습니까? 또한 라우터 매핑을 붙여 넣습니다. – dierre

답변

1

venue.fetch이 특정 유형의 전화를 걸고있는 것 같기 때문에 _id 속성이 모델에서 올바르게 액세스되는지 알 수 없습니다.

window.Venue = Backbone.Model.extend({ 
     urlRoot: base+"/venues", 
     idAttribute: this.options._id, 
    }); 

을 (그리고 옵션 해시에서 ID를 당겨)

을 그리고 작동하지 않는 경우 idAttribute 동적으로 선언하려고 :

아마 시도

window.Venue = Backbone.Model.extend({ 
     urlRoot: base+"/venues", 
     idAttribute: function() { return this.options._id }, 
    }); 
+0

'옵션이 정의되지 않았습니다'오류가 발생합니다. – remotevision

+0

죄송합니다. 밤늦게까지 코드를 작성 했으므로 수정했습니다. – CamelBlues

1

var base = 'http://localhost:3000'; 

나쁜 생각, 완전히 불필요합니다. 그냥 완전히 제거하십시오. '/ venues'와 같은 절대 경로를 URL로 사용하면 앱이 어디에서 실행 되든 관계없이 제대로 작동합니다.

코드와 스크린 샷 사이에는 2 개의 다른 포트가 있습니다. 올바른 애플리케이션 서버와 통신하고 있습니까?

그렇지 않은 경우 서버 측 코드에서 버그를 확인 했습니까? 데이터베이스를 쿼리 할 때 서버 측 코드가 잘못된 값을 사용하는 것처럼 간단 할 수 있습니다.

+0

지금은 API 애플리케이션이 UI 애플리케이션과 별도로 호스팅됩니다. 그래서 내가이 전체 URL을 가지고 있으며 다른 포트에 있습니다. 나는 백본에 처음이므로 더 좋은 방법이 있다면, 나는 모두 귀입니다! – remotevision

+0

괜찮 았어, 나는 앞서 가서 api 프로젝트에 UI 응용 프로그램을 병합하여 사물을 단순화했다. 나는 여전히 잘못된 모델을 가져온 것과 같은 결과를 얻는다. – remotevision

+0

UGH! 내 서버 사이드 코드에 버그가 있습니다. 나는 Mongoose를 사용하고 있으며 findById() 대신 findOne()을 사용하고 있습니다. 감사합니다 – remotevision

관련 문제