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" : "" }

Lithium Model クラスは次のようになります。

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

データが Lithium から渡されたり変換されたり、モデルとしてバックボーンの Holiday モデルにロードされたりするときに、明らかに問題があります。私のコードに明らかに間違っているものはありますか?

4

1 に答える 1

1

デフォルトでは、Backbone は応答のルートにあるモデル データを想定しています。あなたはそれを「休日」キーの下に置いています。コントローラーで、 を試してくださいreturn $Holiday->to("array");。バックボーンが期待するように、それを返す必要があります。parse()または、バックボーン モデルのメソッドをオーバーライドできます。

于 2012-12-02T17:44:39.490 に答える