单击时收听新创建的模型

Listening to a newly created model on click?

本文关键字:创建 模型 新创建 单击      更新时间:2023-09-26

我正在单击时创建一个模型,想知道在哪里侦听模型上的验证事件的最佳位置?我创建模型,在属性上设置输入值,然后创建一个侦听器,在单击处理程序中使用此侦听器感觉不对,但也许我错了?

.JS

    buttonClicked: function(event) {
            var input = this.$('.js-input'),
                itemValue = input.val(),
                model = new Item({
                    item: itemValue
                }, {
                    validate: true
                });
        this.listenTo(model, 'invalid', this.onFormError, this);
    }

链接到代码笔 http://codepen.io/styler/pen/rearYp

这取决于你对模型做了什么。如果要在新视图中显示它,验证应在新视图的初始化中。

var view= Backbone.View.extend({
   model:Item,
   initialize: function (model, options) {
     this.listenTo(this.model, 'invalid', this.onFormError, this);
   },
   ......
}

如果您在本地使用它,则可以将其放在单击处理程序中。

试试这个...

var view= Backbone.View.extend({
    model:Item,
    initialize: function (model, options) {
        this.model= new Item();
        this.listenTo(this.model, 'invalid', this.onFormError, this);
        this.render();
    },
    buttonClicked: function(event) {
        var input = this.$('.js-input'),
        itemValue = input.val(),
        this.model.set('item', itemValue);
        if(!this.model.isValid(true)){
              return;
        }
    }
    ......
}