2015-06-27 72 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

它的工作原理,謝謝 –

相關問題