использование базовой модели для заполнения опций поля выбора - PullRequest
0 голосов
/ 09 марта 2020

Я хотел бы заполнить параметры поля выбора атрибутами из модели "stati c". Например, у меня есть Модель и коллекции штатов США:

State = Backbone.Model.extend({
    label:'',
    value:''
 }) ;
STATES = Backbone.Collection.extend({
    model: State
 });
 states =  [
    {label: "Select     ", value: '__' },
    {label: "Alabama     ", value: 'AL' },
    {label: "Alaska      ", value: 'AK' },
    {label: "Arizona     ", value: 'AZ' },
    ....];
  localstates = new app.STATES(states);  // or fetch the list of states from a RESTful site. 

Затем я использую обратную форму, чтобы получить любое адресное представление, и я хочу передать localstates в форму, чтобы заполнить параметры поля состояния:

    UserAddress =  Backform.Form.extend({
    el: $("#personalInformation"),
     fields: [
       {name: "address1", label: "Address1", control: "input"},
       {name: "address2", label: "Address2", control: "input"},
       {name: "city", label: "City", control: "input"},
       {name: "state", label: "State", control: "select", 
         options: **localstates**,
       {name: "zip", label: "Zip Code", control: "input"},
       {control: "button", label: "Save to server"}
     ],
});

Полагаю, мне нужно как-то передать коллекцию состояний в представление User Address и затем получить доступ к атрибутам. Но я не смог найти хороший пример того, как это сделать.

edit1: Хорошо, в данном случае это немного глупо, но:

newstate = new app.STATES(app.states);
  var allstates =[];
app.newstate.forEach(function(state){
  allstates.push({"label": state.get("label"), "value" : state.get("value")});
})

Дает мне и массив, который я могу использовать в localalstate. По сути, я просто заново создал свой оригинальный массив в этом случае. В случае, если он был получен с сервера, это было бы полезно, но есть ли лучший способ?

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете сделать localstates.toJSON(), чтобы получить копию значений для использования в шаблоне.

См. Collection.toJSON()

...