2013-02-04 48 views
0
Person = Backbone.Model.extend(
    defaults: 
    name: 'Jony James' 
    age: 30 
    occupation: 'developer' 

    validate: (attrs) -> 
    if attrs.age < 0 
     return 'Age must be positive, stupid.' 
    if not attrs.name 
     return 'A person must have a name! fool.' 

    work: -> 
    @get('name') + " is working." 
    ) 

PersonView = Backbone.View.extend({ 
    tagName: 'li' 

    #template: _.template($('#personTemplate').html()) 
    template: "#personTemplate" 

    initialize: -> 
     @render() 

    render: -> 
     template = _.template($(@template)) 
     @$el.html(template) 

    }) 

person = new Person 
personView = new PersonView(model: person) 
$(document.body).append personView.el 

沒有方法 '替換' 在我index.html遺漏的類型錯誤:對象[對象對象]與Backbone.js的和CoffeeScript的

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
</head> 
<body> 
    <script id="personTemplate" type="text/template"> 
    <strong><%= name %></strong> (<%= age %>) - <%= occupation %> 
    </script> 
    <script src="js/underscore.js"></script> 
    <script src="js/jquery.js"></script> 
    <script src="js/backbone.js"></script> 
    <script src="js/main.js"></script> 
</body> 
</html> 

隨着template: _.template($('#personTemplate').html())@$el.html(@template(@model.toJSON()))工作正常。

但隨着main.js當前版本我得到這個錯誤在谷歌瀏覽器控制檯:

Uncaught TypeError: Object [object Object] has no method 'replace' 

哪裏錯誤?

謝謝!

+1

我熟悉的骨幹,而與這樣的CoffeeScript原諒我,如果我不正確的閱讀,但它看起來好像你不實際在渲染時將模型/變量傳遞到模板中? – DigTheDoug

回答

2

錯誤在模板函數中。經過嘗試,而不是一個jQuery對象中的HTML:

template = _.template($(@template).html(), @model.toJSON())

+0

它不適用於.html。 '我得到Uncaught ReferenceError:年齡沒有定義'。 – hyperrjas

+0

@hyperrjas看我的編輯。 –

+0

謝謝你是對的。我用'@ model'替換了'this.model' – hyperrjas

相關問題