我正在开发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:}',但模型中的解析函数永远不会被调用。
任何帮助表示赞赏;
答案 0 :(得分:1)
你必须在你的解析函数中返回一个值:
parse: function(response, options) {
console.log("In Address::parse");
for(thing in response) {
console.log("Key:" + thing + ", Val: " + response[thing]);
}
return response;
}