0

電話のモデルと電話のコレクションがあります。Marionette.CompositeView は電話フォーム要素のコレクションのレンダリングに使用され、Marionette.ItemView は入力のレンダリングに使用されます。

CompositeView は .add-phone ボタンからイベントをリッスンし、空の電話モデルをコレクションに追加しますが、Backbone.Collection は追加イベントでモデルを検証し、例外をスローします。

新しい空の電話フォーム要素を追加するために、電話モデルとマリオネットビューで標準バリデーターを使用する方法は?

Uncaught Error: Can't add an invalid model to a collection

フィドルを見る

4

1 に答える 1

0

いくつかの異なるオプションがあります。「数値」プロパティがまったく設定されていない PhoneModel を検証で渡すことができます。

    validate: function() {

        if(_.has(this.attributes, 'number'))
            return;

        return this.get('number').length == 0;
    }

これは、number属性が空の文字列に設定されているモデルでは失敗します。

または、新しい項目を追加するための別のセクションをテンプレートに提供し、ユーザーが [追加] ボタンをクリックした後にのみモデルを作成することもできます。このフィドルのようなもの。

于 2012-12-13T19:25:40.463 に答える