-1

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

我在url部分中执行以下操作作为要传递给调用editableXEditable 函数的参数之一:

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 可编辑的保存状态永远不会结束.. 意味着 X 可编辑进入无限循环以打印一些消息。

我的第一个问题为什么数据无法保存在服务器上?我已经通过POSTMANchrome 插件正确检查了这个 url。

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

4

1 回答 1

1

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

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);
    }
});
于 2013-09-30T11:12:36.130 回答