使用主干模型来填充选择字段的选项



我想用"静态"模型的属性填充选择字段的选项。例如,我有一个模型和美国各州的集合:

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. 

然后,我使用back-form有任何地址视图,我想将localstates传递到form中,以填充state字段的选项:

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"}
],
});

我想我需要以某种方式将states集合传递到User Address视图中,然后访问这些属性。但我一直找不到一个好的例子来说明如何做到这一点。

编辑1:好的,在这种情况下这有点傻,但是:

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

给我一个可以在localstate使用的数组。在这种情况下,基本上我只是重新创建了我原来的数组。在从服务器获取的情况下,这将是有用的,但有更好的方法吗?

您可以执行localstates.toJSON()以获得要在模板中使用的值的副本。

参见Collection.toJSON()

最新更新