具有复合键的Backbone.js

au9on6nz  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(204)

是否可以让Backbone.js使用复合键?

Id est,而不是将ididAttributemodel设置为一个特定的值,我想知道Backbone.js,我将使用多个属性。这样,每个RESTful调用都将发送这两个参数来标识我们正在讨论的对象。
举个例子,假设我想更新一个人对特定人的债务,模型是:

Borrower (borrowerId, name, ...)
Lender (lenderId, name, ...)
Debt (borrowerId, lenderId, debtAmount)

所以,我现在想让Backbone.js更新/删除一个debt对象,我怎样才能让它使用复合键(borrowerId, lenderId)呢?

v2g6jxz6

v2g6jxz61#

您可以覆盖模型的url()实现,如Backbone文档中所建议的:

var Debt = Backbone.Model.extend({
  url: function() {
    var base = /* your base URL here */;
    if (this.isNew()) return base;
    return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + encodeURIComponent(this.get("borrowerId")+"_"+this.get("lenderId"));
  }
});

上面的代码将产生baseURL/borrowerId_lenderId的URL。注意,在构造模型的URL时,您可能需要考虑集合的基本URL。

i7uq4tfw

i7uq4tfw2#

你需要覆盖集合上的URL函数和modelid函数,URL默认只知道如何处理一个属性,所以你需要一种方法来Map它。
集合使用字典在get过程中查找元素。有一个modelId函数可以将模型转换为表示字典中要使用的键的强函数。对于复合函数,可以使其返回'' + id 1 + '-' + id 2或类似的值。

相关问题