1

私はtutsplus.comでこのチュートリアルに従っていますが、信じられないほど簡単に見えますが、実行person.set('age', -27);するとfalseが返されず、代わりにプロパティが負の値に設定されます。検証に関するバックボーンドキュメントとオンラインのいくつかの投稿を調べましたが、機能するはずですか?私はまだリターン文字列を取り戻さないことを知っています。

これが私のjsで、何かを見逃し続けない限り、ビデオとまったく同じです。

var Person = Backbone.Model.extend({
  defaults: {
    name: 'John Doe',
    age: 30,
    occupation: 'worker'
  },
  validate: function(attrs) {
    if ( attrs.age < 0 ) {
        return 'Age must be positive, stupid.';
    }
  },
  work: function() {
    return this.get('name') + ' is working.';
  }
});

合格しないと言ったいくつかの場所を読んでください、silent: trueそして私は私がそうではないと思います...少なくとも私のコードでは明示的にではありません。

4

1 に答える 1

1

@xat と @mu が短すぎると指摘したように、以前のビデオのいくつかは最新バージョンに更新されていましたが、問題は古いビデオでした。9.10 の変更ログには次のように記載されています。

Model validation is now only enforced by default in Model#save and no longer enforced by default upon construction or in Model#set, unless the {validate:true} option is passed.

だから私は合格することに決めvalidate:true、またテストしModel#save、それぞれが機能しました。

みんなありがとう!

于 2013-03-03T02:57:58.380 に答える