0

假设我有一个person带有name属性的模型。

在服务器端,当我创建JSON模型的表示时,我包含了一个计算值:

name: 'Jack'
name_backwards: 'kcaJ' # example

客户端,当我这样做时backbone_model.save(attributes),它包含name_backwards在它发送到服务器的对象中。这并不理想,因为它与服务器上的实际属性不对应。

PATCH不是一个选项,因为我使用的是 Rails 3.2。有没有办法解决这个问题?

4

2 回答 2

1

对我来说似乎有点奇怪,您的服务器正在发送一些它不会接受的东西。我看到两个选项:

  1. 过滤掉name_backwards控制器中的传入。
  2. 停止发送name_backwards,让客户端处理。

1很简单,只需:name_backwardsparams.

2涉及更多一点。首先,您将停止添加name_backwards到输出的 JSON 中。然后你可以添加name_backwards你的模型parse

parse: function(response) {
    response.name_backwards = reverse(response.name);
    return response;
}

有关在 JavaScript 中反转字符串的可靠方法,请参阅此答案

然后你会想name_backwards在你的模型中忽略toJSON

toJSON: function() {
    var o = _(this.attributes).clone(); // This is what the standard toJSON does.
    delete o.name_backwards;
    return o;
}

然后添加一种serialize方法来使用,而不是toJSON在将模型提供给模板时使用:

serialize: function() {
    return _(this.attributes).clone();
}

如果您想要一种简单的方法在模型和模板之间建立一致的界面,您可以轻松serialize地进行修补。Backbone.Model.prototype

于 2013-07-05T21:58:15.247 回答
0

覆盖子类toJSON中的方法Backbone.Model并仅从this.attributes.

于 2013-07-05T21:30:33.630 回答