通过XEditable保存Backbone.model

时间:2013-09-07 04:54:24

标签: javascript backbone.js x-editable

我正在使用Backbone并使用XEditable进行内联编辑。

我在url部分中执行以下操作,作为要调用XEditable的函数editable的参数之一:

url: function(params) {
            console.log(params);
            console.log(here.model);
            var saveUrl = here.model.url;
            here.model.url += '/'+here.model.attributes._id; //setting required url for the request to be sent on the server
                var d = new $.Deferred;
                here.model.save( 
                  {field:params.value},
                  { patch: true }, 
                  { error: function() {
                    console.log("error");
                      d.reject('Server Error..!');
                    }
                  },
                  { success: function() {
                    console.log("done");
                    d.resolve();
                    }
                  }
                );
                return d.promise();
              }

但是当我在服务器上保存数据时

我收到错误:

POST http://10.0.1.6:3000/g/spec/5229d8fff4ae7a3803000020 404 (Not Found) on console and 

另外:在浏览器上,X editable的保存状态永远不会结束..意味着X editable会在无限循环上打印一些消息。

我的第一个问题是为什么数据无法保存在服务器上? 我已通过POSTMAN chrome插件正确检查了此网址。

第二个问题是:如果某种方式数据无法保存在数据库中,因为我正在使用延迟对象并在出现错误时拒绝承诺,为什么X-editable没有显示错误“Server Error ..!”

1 个答案:

答案 0 :(得分:1)

如果你想使用backbone的一个model.save,你应该将url留空并使用x-editable success-callback。例如。在视图的渲染方法中,您必须设置更新模型并触发保存(手动或通过模型的更改处理程序)

this.$el.find("#my-field").editable({
    type        : 'text',
    name        : myFieldTitle,
    value       : myCurrentValue,
    pk          : this.model.get('id'),
    url         : '',
    success     : function(response, newValue) {
        self.model.set(field.name, newValue);
        self.model.save(field.name, newValue);
    }
});