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

<!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'

エラーはどこにありますか?

ありがとうございました!

4

1 に答える 1

2

エラーはテンプレート関数にあります。jQueryオブジェクトの代わりにhtmlを渡してみてください。

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

于 2013-02-04T18:46:33.513 に答える