1

我正在尝试将选项标签动态地放入选择列表中。

当按下ADD按钮时,输入文本中的值被设置为一个新模型的字段,然后这个模型被推送到集合中(通过 .create 方法),并触发一个事件以刷新选择视图。问题是我需要新创建模型的 ID 属性将其放入DOM(Collection.create 返回模型实例,但触发的事件传递了“不完整”模型)。

//选项视图

optionView = Backbone.View.extend({

tagName: 'option',

attributes: function(){
    var f1 = this.model.get("f1");
    var id = this.model.get("id");
    return {
        value: f1,
        id: id
    };
},

render: function(){
    this.$el.text(this.model.get("f1"));
    return this; 
}

});

//选择视图

selectView = Backbone.View.extend({

el: '#container',

collection: selectList,

events: {
    "click #add-season":  "create",
},

initialize: function () {
  var options = this.collection;

    this.$addInput = this.$('#new-opt');  

_.bindAll(this, 'appendOne', 'appendAll');

    options.on('add',     this.appendOne); 
    options.on('reset',   this.appendAll);

    options.fetch(); // Loads list from local storage
},

appendOne: function(opt) { //PROBLEM! opt doesn't have auto-generated ID yet

var view = new app.OptionView({model: opt});

    this.$("#select-list").append( view.render().el );
},

appendAll: function() {
this.$("#select-list").html('');
    this.collection.each(this.appendOne);
},


create: function() { 

    this.collection.create({
        f1: this.$addInput.val() 
    });

    this.$addInput.val('');
}

});
4

1 回答 1

1

{wait: true}如果您想在将新模型添加到集合之前等待服务器,请通过 。创造

尝试这个

create: function() { 

    this.collection.create({
        f1: this.$addInput.val() 
    }, {wait : true});

    this.$addInput.val('');
}
于 2013-03-15T09:17:32.923 回答