0

すべて、私は Backbone の初心者です。バックボーンのモデルを理解しようとしています。特にモデルの定義方法。これまでのところ、バックボーンのモデルを定義する方法について、明確または正式な方法は見当たりませんでした。たとえば、ヘルプ ドキュメントの set メソッドを見てみましょう。

設定

model.set(属性、[オプション])

モデルに属性のハッシュ (1 つまたは複数) を設定します。

以下のようなコードがあるとします。setメソッドは実際にはJavaScriptオブジェクトをモデルに割り当てることだと思います。

    window.Employee = Backbone.Model.extend({

      validate:function(attrs){
        for(var key in attrs){
            if(attrs[key] == ''){
                return key + "can not be null";
            }
            if(key == 'age' && isNaN(attrs.age)){
                return "age is numeric";
            }
        }
      }
    });

    ....
    var attr = {}; // I can't not sure what is {} mean.
    $('#emp-form input,#emp-form select').each(function(){
        var input = $(this);//using jquery select input and select. and enumerate all of them.
        attr[input.attr('name')] = input.val();//I am not sure what does it means
    });
    if(employee.set(attr)){
            Employees.create(employee);
        }
    ....

この例では、クラス フィールドまたはメソッドを定義するために Java クラスまたは C# クラスで見られる従来の方法は見ませんでした。しかし、機能だけを見てくださいvalidate。私が理解するのを助けるために、それについてもっと教えてくれる人はいますか? ありがとう。

4

2 に答える 2

1

JSのモデルは基本的にデータのラッパーであり、CRUDと単純な検証機能を備えています。正しく動作するには、サーバー関数を(ajax)で動作させる必要があります。このチュートリアルでは、すべてhttp://backbonetutorials.com/what-is-a-model/と言っていると思います。データベースの代わりに、モデルはアプリケーションサーバー側で機能します。

データにカスタムアクション(追加/編集/削除だけでなく)がある場合は、データを手動で「set()」し、「onchange」イベントを使用して、必要に応じてビューを更新できます。「onchange」イベントを特定のフィールドにのみアタッチし、ビューにカスタム関数を作成して、各特別なフィールドを処理することもできます(検証または表示用)。

初期化値とデフォルト値でフィールドを定義できますが、カスタム関数は定義できません(多くの場合、定義できますが、model.customFuntion()お勧めしません。

より「古典的な方法」にするために、他のBackbone関数http://backbonejs.org/#Collection-Underscore-MethodsおよびBackbone.Collectionを使用する必要があります。

于 2013-02-28T14:41:00.307 に答える
1

Backbone でモデルを定義するには、Backbone.Model オブジェクトを拡張する必要があります。たとえば、新しい User モデルを作成したい場合は、次のように記述できます。

var User = Backbone.Model.extend({})

ニーズを満たすために、一部のモデル メソッドを上書きすることもできます。たとえば、urlRoot属性を変更して、データを取得する場所をモデルに伝えることができます。

バックボーン モデルには、attributes属性にデータが含まれています。モデル メソッドを使用してこれらの属性を変更し、setメソッドを使用してモデルに格納されている値を読み取ることができますget。したがって、ユーザーが情報を入力できるいくつかの入力がある場合、たとえば、名前と電子メールで新しいユーザーを作成し、両方のテキスト入力を含むフォームがあるとします。次のようなことができます:

var user = new User;
user.set('name', $('#name').val());
user.set('email', $('#email').val());
attributes = {
  name: user.get('name'),
  email: user.get('email')
};
user.save(attributes);

このコードをリファクタリングして見栄えを良くする方法はたくさんありますが、それらの方法をどのように使用できるかを理解するのに役立ちます。バックボーンのドキュメントをチェックして、それらがどのように機能するかをもう少し調べてください。お役に立てれば!

PD: 私の例では、一度に属性を設定しましたが、属性のハッシュを送信して、1 回の呼び出しでより多くの値を設定することもできます。

于 2013-02-28T14:25:45.020 に答える