在点击时聆听新创建的模型?

时间:2016-03-01 19:58:06

标签: javascript backbone.js

我正在点击创建一个模型,并想知道哪个是在模型上监听验证事件的最佳位置?我创建了模型,在属性上设置输入值然后创建一个监听器,它在单击处理程序中感觉没有这个监听器但是我可能错了吗?

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);
    }

指向codepen http://codepen.io/styler/pen/rearYp

的链接

1 个答案:

答案 0 :(得分:1)

这取决于您对模型的处理方式。如果要在新视图中显示它,则验证应该在新视图的初始化中。

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;
        }
    }
    ......
}