Backbone.js模板错误与coffeescript和生态模板语言

时间:2012-05-01 15:11:50

标签: ruby-on-rails google-chrome backbone.js coffeescript eco

解决:

我有一个用coffeescript编写的骨干(0.9.2)如下

class Animal.Views.Cats extends Backbone.View
 template: JST['animals/cats']
 ...
 ...
 render: ->
  $(@el).html(@template())
  this

使用此coffeescript代码,当我在浏览器中执行时, 我在控制台

中收到以下错误
  

对象< #cat>的属性模板不是一个功能

我正在使用带有rails 3.1后端的eco模板 我哪里错了?

溶液

问题是深层嵌套的模板文件结构

  

模板:JST ['哺乳动物/动物/猫']修复了问题

2 个答案:

答案 0 :(得分:2)

重申一下,如果你有这样的目录结构:

app/assets/templates/namespace/animals/cats.jst.eco

在引用模板时,您需要包含命名空间:

  • 工作:JST['animals/cats']
  • 将工作:JST['namespace/animals/cats']

答案 1 :(得分:1)

代码“模板”中的

未定义为函数,而是定义为属性。

template: -> JST['animals/cats']

即插入功能箭头' - >'

或者,如果你不希望它成为一个函数,那么在@template之后删除括号

$(@el).html @template