从锂控制器获取的主干模型未在bb模型中正确加载



我正在使用 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 lithiumdataModel {
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 模型未正确"形成":

    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 模型中时,存在一些问题。我的代码中是否有非常明显的错误?

默认情况下,Backbone 需要将模型数据放在响应的根目录下。您将其放在"假日"键下。在控制器中,尝试return $Holiday->to("array"); 。这应该像 Backbone 所期望的那样返回它。或者,您可以覆盖主干模型的parse()方法。

最新更新