BackboneJs验证没有解雇

时间:2014-03-14 11:16:43

标签: backbone.js backbone-events

我需要控制台在没有标题的情况下创建歌曲时通知 我试过了,但控制台什么都没显示。 语法错误既不会被抛出

var Song = Backbone.Model.extend({
    defaults:
    {
        title: "default title",
        track: 0
    },
    initialize: function()
    {
        this.on("change:title", function(){
            console.log("title changed");
        }); 

        this.on("error",function(model,error)
        {
            console.log(error);
        });
    },
    validate: function(attribs)
    {   
        if (attribs.title === "default title") 
        {
            return "please set a title";
        }
    }
});

var song1 = new Song;
song1.set({ track: 1});

1 个答案:

答案 0 :(得分:1)

Backbone 1.1 slightly changed how validation works

  

模型验证现在仅在保存时默认强制执行 - 而不是在集合中   除非传递{validate:true}选项。现在模型验证   触发“无效”事件而不是“错误”。

尝试

song1.set({track: 1}, {validate: true});

并将您的听众更改为

this.on("invalid", function(model, error) {
    console.log(error);
});

演示http://jsfiddle.net/nikoshr/z2p9T/