2015-06-27 39 views
1

我有这样的JS代码:为什么我的简单看法是不工作

$(function() { 

    var LinkView = new Backbone.View.extend({ 
    render: function() { 
     this.$el.html(this.model.get('text')); 
    } 
    }); 

    var Link = Backbone.Model.extend({ 
    text: 'message', 

    say: function() { 
     console.log(this.text); 
    } 
    }); 

    var l = new Link(); 
    l.say(); 

    var v = new LinkView({model : l, el : 'body'}); 
    v.render(); 
}); 

我在等待得到“消息”的浏览器,但得到的错误TypeError: r.apply is not a function在控制台中。为什么以及如何修复它?

+1

你真的有'无功LinkView =新Backbone.View.extend({...})'而不是'VAR LinkView = Backbone.View.extend({...} )'? –

+1

此外,'text'是'Link'中的JavaScript属性,而不是Backbone属性,因此'this.model.get('text')'不起作用。如果你想要一个你可以“获得”的属性,你会想'新的链接({text:'message'})'。 –

+0

谢谢,它帮助我。正如我所看到的,我可以使用'this。$ el.html(this.model.text);' – demas

回答

1

请贴这个,new是View中的问题,也做了些微修改。它的工作原理现在..

$(function() { 

var Link = Backbone.Model.extend({ 

defaults : { 
    text: 'default message' 
    }, 

    say: function() { 
    console.log(this.get('text')); 
    } 
}); 

var LinkView = Backbone.View.extend({ 
    render : function() { 
    this.$el.html(this.model.get('text')); 
    } 
}); 

var l = new Link({text:'custom text message'}); 
l.say(); 

var v = new LinkView({model : l, el : 'body'}); 
v.render(); 
}); 
+0

它的工作原理,谢谢 –

相关问题