在Backbone中我的模型没有调用解析

时间:2014-03-06 22:06:51

标签: backbone.js backbone-model

我正在开发Backbone + require应用程序。事情在某种程度上有效,但在服务器上更新模型后,虽然服务器返回200,但是传递给模型的'save'的选项哈希中的'error'函数被调用。

我想我已经确定了问题,因为服务器返回一个包含'id'的JSON对象,而模型有一个标记为'aid'的id属性。

我的理解是这应该在模型的'parse'函数中处理,但是我无法调用模型的''parse'函数。这是我的模特:

define([
// These are path alias that we configured in our bootstrap
'jquery',     // lib/jquery
'underscore', // lib/underscore
'backbone',    // lib/backbone
'util'
], function($, _, Backbone){
    // Above we have passed in jQuery, Underscore and Backbone
    // They will not be accessible in the global scope

    var Address = Backbone.Model.extend({
        initialize: function() { console.log("Address initialized"); },
        urlRoot: '/address/',
        parse: function(response, options) {
            console.log("In Address::parse");
            for(thing in response) { 
                console.log("Key:" + thing + ", Val: " + response[thing]); 
            }
        }
     });

     return {
         address: Address
     };
});

这是我观点的相关部分:

events: {
"submit #add-address-form": "addAddress",
},

addAddress: function(ev) {
var that = this;
ev.preventDefault();
var addressDetails = $(ev.currentTarget).serializeObject();
var addr = new A.address();
addr.save(addressDetails, {
    success: function(model, response, options) {
        that.Backbone.application.router.navigate('', {trigger: true});
    },
    error: function(model, response, options) {
        console.log("Response status: " + response.statusCode());
    }
});
return false;
},

当提交视图呈现的表单时,将触发“addAddress”并更新服务器。我的应用程序从服务器和JSON对象接收200 '{id:}',但模型中的解析函数永远不会被调用。

任何帮助表示赞赏;

1 个答案:

答案 0 :(得分:1)

你必须在你的解析函数中返回一个值:

parse: function(response, options) {
    console.log("In Address::parse");
    for(thing in response) { 
        console.log("Key:" + thing + ", Val: " + response[thing]); 
    }
    return response;
}