Backbone.js内联模板在Opera中不起作用

时间:2012-10-07 15:08:56

标签: javascript backbone.js underscore.js backbone-views

我创建了一个使用内联模板的backbone.js应用程序,例如:

<script type="text/html" id="header-template">
<div class='header'>
<strong><%= name %></strong>
</div>
</script>

然后在视图中:

template = _.template($("#header-template").html());

在Opera中,由于$("#header-template").html()返回null,因此会引发错误。有谁知道如何解决这个问题?

由于

更新

我在控制台中收到的错误是Unhandled Error: 'App.view.header' is not a constructor。当我将underscore.js和backbone.js更新为最新版本时,我在Chrome中也会收到此错误。

标题的定义如下:

App.view.header = App.view.header || {} 

App.view.header = Backbone.View.extend({
...
});

并在路由器中呈现如下:

$('header').html( new App.view.header().render().el);

另一次更新

我创建了一个小的backbone.js应用程序,它有同样的问题:

http://goo.gl/KoOvq

1 个答案:

答案 0 :(得分:0)

您可以将模板包装在一个函数中,并仅在需要时调用它。

我更喜欢这种方式,因为如果你开始将你的模板放在另一个文件中,它们将仅在需要时加载,你现在的方式是在应用程序启动时加载它们。

  

template = function(variables){return _.template(template,variables)}