0

他のモデル(RuleInformationModel)という属性を持つモデル(RuleModel)を作成しました。しかし、json(SampleRule)データを渡している間、内部モデルは満たされていません。

コンソールiamを実行すると、未定義になります。そのため、サンプルjsonのデフォルト値のみを持つcosoleのRuleInformationModelをチェックインしても、この内部モデルに追加されていません。

var  SampleRule = {
    RuleId: 1,
    Information: [{ 
        RuleId:1,
        RuleName: 'Diwali Offer', 
        MerhantId: '565cfa73-8f12-4876-b2cf-2e61a28eddca', 
        StartDate: '1/1/0001 12:00:00 AM', 
        EndDate: '1/1/0001 12:00:00 AM', 
        IsActive: 'True', 
        Description: 'Diwali Offer for Samsung products',
        RuleSetId: 1 ,
        Status:'False'
}],
    Conditions: {},
    Actions: {}
};

var RuleInformationModel = Backbone.Model.extend({

    defaults: {
        RuleId: '',
        RuleName: '', 
        MerchantId: '', 
        StartDate: '', 
        EndDate: '', 
        IsActive: '', 
        Description: '',
        RuleSetId: '',
        Status: 'False' 
    },
    idAttribute: "RuleId"
});

var RuleModel = Backbone.Model.extend({

    initialize: function (options) {
        this.RuleId = options.RuleId;
    },
    defaults: {
        RuleId: '',
        Information: new RuleInformationModel(),
        Conditions: {},
        Actions: {}
    },
    idAttribute: "RuleId",
    urlRoot: function () {
        return "../BackBoneApi/RuleEngine/" + this.RuleId
    },
    parse: function (response) {
        response = SampleRule;
        return response;
    }
});

var NewOrEditRuleView = Backbone.View.extend({

    tagName: 'div',
    template: ItemTemplate,
    initialize: function (options) {
        var self = this;
        self.model = new RuleModel({RuleId:options.RuleId});
        this.model.fetch();
        console.log(self.model.get('Information').get('RuleName'));
    },
    render: function (Purpose) {
        var self = this;
        var tmpl = _.template(self.template);
        console.log(self.model);
        self.$el.html(tmpl({ Purpose: Purpose, RuleName: self.model.get('Information').get('RuleName') }));
    }
});
4

1 に答える 1

0

いいえ、ありません。SampleRuleオブジェクトをインスタンス化または解析するコードを投稿していませんが、私はあなたが言っていることを理解していると思います。次のようなことを行うメソッドを自分RuleModelで作成することをお勧めします。

var RuleModel = Backbone.Model.extend({
   // As you were..
   // ...
    updateInformationModel: function(object) {
        // SampleRule.Information is an array, I assume this is by design? If so:
        this.get("Information").set(object.Information[0]);
    }
   // ...
});
于 2013-02-22T13:40:29.550 に答える