我正试图找出骨干视图读取模板数据的最佳方法。我正在使用下划线模板。
我在页面上的脚本块中定义了一个模板:
<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中读取此模板的视图中的正确位置在哪里?
答案 0 :(得分:2)
我试图找出骨干视图读取模板数据的最佳方法。我使用下划线模板。
回答问题的特定部分。我可以建议在requirejs中使用插件吗?
因为你运行app.js,我猜你可能正在使用requirejs。我在这里测试运气。我的猜测可能完全错了。但是,如果你是,为什么不尝试使用文本!来自requirejs的插件,它读取一个文件作为字符串(你的模板),如此?
define(
['text!templates/template.html'], function(myTemplate){
});
到目前为止,就模板而言,这种方法效果很好。使用此方法从未遇到过任何问题。
您可以在&#34; Modularizing Backbone View&#34; here下找到此信息。节
答案 1 :(得分:1)
立即计算对象文字的值,因此模板的jQuery选择器返回空。您需要等到DOM准备好选择模板。
有关更多信息,请参阅此文章: