Backbone.js с составными ключами - PullRequest
3 голосов
/ 23 февраля 2012

Можно ли заставить Backbone.js работать с составными ключами?

То есть вместо установки id или idAttributemodel на конкретное значение, я хочу знатьBackbone.js, что я буду использовать более одного свойства.Таким образом, каждый вызов RESTful будет посылать эти два параметра для идентификации объекта, о котором мы говорим.

В качестве примера, скажем, я хочу обновить долг человека доконкретный человек, и модель:

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

Итак, теперь я хочу, чтобы Backbone.js обновлял / удалял объект долга.Как я могу заставить его работать с составным ключом (borrowerId, lenderId)?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

Вы можете переопределить реализацию 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"));
  }
});

Приведенный выше код приведет к URL-адресам вида baseURL/borrowerId_lenderId.Обратите внимание, что при создании URL-адреса модели может потребоваться учесть базовый URL-адрес коллекции.

0 голосов
/ 31 марта 2018

Вам необходимо переопределить функцию URL и функцию modelid в коллекции. По умолчанию URL-адрес знает, что делать с одним атрибутом, поэтому вам нужен способ отобразить его.

Коллекция использует словарь для поиска элементов во время получения. Существует функция modelId, которая преобразует модель в сильную, которая представляет ключ для использования в словаре. Для соединений вы должны вернуть '' + id1 + '-' + id2 или аналогичный.

...