我在骨干中得到一个未定义的模型

时间:2013-05-26 21:01:56

标签: backbone.js model undefined

我有这段代码:

    var Day        = Backbone.Model.extend({
        default: {
            service: 'None',
            concert: 'None',
            bible:   'None',
            social:  'None',
            play:    'None'
        }
    }),

    Day_view   = Backbone.View.extend({

        render: function(){
            this.$el.html('Service:' + this.model.service + '<br />Concert:' + this.model.concert + '<br />Bible:' + this.model.bible + '<br />Social:' + this.model.social + '<br />Play:' + this.model.play);
            return this;
        } 
    }),

    day_view = new Day_view({model: new Day({service: '10', concert: '11', bible:   '11', social:  '13', play:    '14' })});
    alert(day_view.render().$el.html());

我明白了:

服务:undefined音乐会:undefined圣经:undefined社交:undefined游戏:undefined

问题出在哪里? 感谢

2 个答案:

答案 0 :(得分:1)

您在Backbone中访问属性的方式是get

this.model.get('service')

答案 1 :(得分:0)

此外,它会抛出未定义的错误,因为您没有定义视图的el。您必须将DOM元素作为钩点传递到Backbone视图以插入html。

$(document).ready(function() {
    var Day = Backbone.Model.extend({
        default: {
            service: 'None',
            concert: 'None',
            bible:   'None',
            social:  'None',
            play:    'None'
        }
    }),

    Day_view = Backbone.View.extend({
        el: 'body',
        render: function(){
            this.$el.html('Service:' + this.model.get('service') + '<br />Concert:' + this.model.get('concert') + '<br />Bible:' + this.model.get('bible') + '<br />Social:' + this.model.get('social') + '<br />Play:' + this.model.get('play'));
            return this;
        } 
    }),

    day_view = new Day_view({model: new Day({service: '10', concert: '11', bible:   '11', social:  '13', play:    '14' })});
    alert(day_view.render().$el);
});