1

ここでモデルを理解しようとしています。私はこのようなモデルを定義しました

 var Employee=Backbone.Model.extend({

    initialize: function(){

    }
});

このように属性を設定します。モデルの 1 つのインスタンスに対して、もう 1 つの属性を追加しましたが、エラー メッセージは表示されませんでした。ここでモデル定義について疑問に思っています! モデルのインスタンスごとに属性が異なる可能性はありますか?

var emp1=new Employee();
var emp2=new Employee();
var emp3=new Employee();
var emp4=new Employee();

emp1.set({eName:"Suresh",eType:"employee",eNationality:"Indian"});
emp2.set({eName:"Håkan",eType:"contractor"});
emp3.set({eName:"Pelle",eType:"employee"});
emp4.set({eName:"Per",eType:"employee"});

    var empList=new Employees([emp1, emp2, emp3, emp4]);
console.log(empList.models);

どんな助けでも大歓迎です!

ありがとう。

4

2 に答える 2

4

ユーザー名に基づいて、.NET でモデルを定義する方法から混乱が生じると思います。サーバー上に、次のようなモデル定義があるとします。

public class Employee
{
    [DisplayName("Employee ID")]
    [Required(ErrorMessage = "ID Required")]
    public int eId { get; set; }
    [DisplayName("Employee Name")]
    [Required]
    public string EName { get; set; }
    [DisplayName("Type")]
    [Required]
    public string eType { get; set; }
    [DisplayName("Nationality")]
    [Required]
    public string eNationality { get; set; }
}

これをバックボーン モデルにマップしたい場合、フィールドを再定義する必要はありません。あなたはただ行うことができます:

var Employee = Backbone.Model.extend({
    idAttribute: 'eId'
});

次に、新しい従業員を作成する場合は、データを追加して作成したのと同じように、新しいインスタンスを作成します。

var emp1 = new Employee({
    eId: "1",
    eName:"Suresh", 
    eType:"employee", 
    eNationality:"Indian"
});
于 2013-02-01T14:11:36.823 に答える
2

簡単な答え:Backbone.jsモデルインスタンスに任意の属性を設定できます。コレクション内のインスタンスに同じ属性を共有させるメカニズムはありません。

実際には、これらのインスタンスを表示するために使用されるビュー/テンプレートは、おそらく特定の属性が存在することを期待します。例のように一部の属性がオプションの場合、ビュー/テンプレートを作成するときにそれを考慮する必要がありますが、属性セットがあまり分岐していなければ、大きな問題にはなりません。

于 2013-02-01T14:04:59.440 に答える