Backbone - 从View中读取DOM中的模板数据

时间:2012-03-21 11:07:23

标签: backbone.js underscore.js

我正试图找出骨干视图读取模板数据的最佳方法。我正在使用下划线模板。

我在页面上的脚本块中定义了一个模板:

<script id="template" type="text/html">
        This is my template
</script>

但是,我在视图的某些部分读取模板时遇到了麻烦(我认为这与el范围有关)。例如:

var SomeView = Backbone.View.extend({

    tagName: 'div',
    className: 'someClassName',

    t1 : $('#template').html(),

    initialize: function() {

        var t1 = this.t1;
        var t2 = $('#template').html();

        ...
    },
    ...

t1包含正确的模板html,而t2为空。

这是为什么?从DOM中读取此模板的视图中的正确位置在哪里?

2 个答案:

答案 0 :(得分:2)

  

我试图找出骨干视图读取模板数据的最佳方法。我使用下划线模板。

回答问题的特定部分。我可以建议在requirejs中使用插件吗?

因为你运行app.js,我猜你可能正在使用requirejs。我在这里测试运气。我的猜测可能完全错了。但是,如果你是,为什么不尝试使用文本!来自requirejs的插件,它读取一个文件作为字符串(你的模板),如此?

define(
['text!templates/template.html'], function(myTemplate){
});

到目前为止,就模板而言,这种方法效果很好。使用此方法从未遇到过任何问题。

您可以在&#34; Modularizing Backbone View&#34; here下找到此信息。节

答案 1 :(得分:1)

立即计算对象文字的值,因此模板的jQuery选择器返回空。您需要等到DOM准备好选择模板。

有关更多信息,请参阅此文章:

http://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/