2012-12-02 3 views
1

저는 backbone.js와 Lithium을 사용하고 있습니다. 페이지에서 숨겨진 매개 변수로받은 _id를 전달하여 서버에서 모델을 가져 왔습니다.백본 모델이 리튬 컨트롤러에서 가져온 모델이 제대로로드되지 않았습니다. 모델

MongoDB를 올바르게 데이터를 저장하고 같은 콘솔에서 볼 수 있습니다 데이터베이스 :

{ "_id" : ObjectId("50bb82694fbe3de417000001"), "holiday_name" : "SHREE15", "description": "", "star_rating" : "3", "holiday_type" : "family", "rooms" : "1", "adults" : "2", "child" :"0", "emails" : "" } 

리튬 모델 클래스는 이렇게이다 :

class Holidays extends \lithium\data\Model { 
public $validates = array(
     'holiday_name' => array(
       array(
         'notEmpty', 
         'required' => true, 
         'message' => 'Please key-in a holiday name! (eg. Family trip for summer holidays)' 
       ))); } 

백본 휴일 모델은 너무하다 :

window.app.IHoliday = Backbone.Model.extend({  
    urlRoot: HOLIDAY_URL, 
    idAttribute: "_id", 
    id: "_id", 
    // Default attributes for the holiday. 
    defaults: { 
    }, 

    // Ensure that each todo created has `title`. 
    initialize: function(props) { 

    }, 

백본/가져 오기 코드는 다음과 같습니다.

var Holiday = new window.app.IHoliday({ _id: holiday_id }); 
     Holiday.fetch(
       { 
        success: function(){ 
         alert('Holiday fetched:' + JSON.stringify(Holiday)); 
         console.log('HOLIDAY Fetched: \n' + JSON.stringify(Holiday)); 
         console.log('Holiday name:' + Holiday.get('holiday_name')); 
        } 
       }    
      ); 

리튬 컨트롤러 코드는 다음과 같습니다

public function load($holiday_id) 
{ 
    $Holiday = Holidays::find($holiday_id); 
    return compact('Holiday'); 
} 

문제 : 서버에서 가져온 백본 모델의 출력은 다음과 같습니다과 휴일 모델이 제대로 데이터 백본 모델로 반환 할 때 '형성'되지 않습니다 : 데이터/통과 리튬 번역 및 백본 휴일 모델로 모델로 업로드 할 때

HOLIDAY Fetched: 
{"_id":"50bb82694fbe3de417000001","Holiday":{"_id":"50bb82694fbe3de417000001","holiday_name":"SHREE15","description":"","star_rating":"3","holiday_type":"family","rooms":"1","adults":"2","child":"0","emails":""}} 

iplann...view.js (line 68) 

Holiday name:undefined 

는 분명히 몇 가지 문제가 있습니다. 내 코드에서 뭔가 명백하게 잘못 되었나요?

답변

1

기본적으로 백본에서는 응답의 루트에 모델 데이터가 있어야합니다. 당신은 그것을 "휴일"열쇠의 밑에두고있다. 컨트롤러에서 return $Holiday->to("array");을 시도해보십시오. 그것은 백본이 기대하는대로 반환해야합니다. 또는 백본 모델의 parse() 메서드를 재정의 할 수 있습니다.

+0

감사합니다. @rmarscher! 그것은 완벽하게 작동합니다. –