【发布时间】:2015-08-05 18:55:11
【问题描述】:
我使用 Browserify 来加载主干视图。 该视图正在渲染一些带有下划线的 html 模板。 当我从 html 模板脚本加载模板标记时,“tmpl2”方法正在生成一个空字符串。 browserify 和 underscore 之间是否存在任何问题,或者为什么它呈现一个空字符串? (我用的是最新版的browserify、underscore、backbone、jquery)
View.js:
var $ = require('jquery');
var Backbone = require('backbone');
var _ = require('underscore');
Backbone.$ = $;
var View = Backbone.View.extend({
tmpl1: _.template("<p>hello: <%= name %></p>"), //HTML hardcoded
tmpl2: _.template( $.trim( $('#tmpl').html() ) ), //HTML from template
render: function(){
console.log( $.trim( $('#tmpl').html() ) ); //<p>hello: <%= name %></p> <-- OK
console.log( this.tmpl1({name : 'moe'}) ); //<p>hello: moe</p> <-- OK
console.log( this.tmpl2({name : 'moe'}) ); //(Emptystring) <-- WTF ???
}
});
module.exports = View;
index.html:
<script type="text/template" id="tmpl">
<p>hello: <%= name %></p>
</script>
【问题讨论】:
-
您确定在您编译模板时加载了 DOM?
-
是的,dom 已经加载了,加载和渲染这个主干视图的脚本在 jquery 就绪方法“$(function(){})”中。
-
是实例化视图的代码,还是声明它?我怀疑是后者,这就是问题所在。
-
是的,你完全正确,现在我看到我已经在 main.js 中放置了 require 方法,用于加载此视图,在 jquery 就绪函数之外。在 ready 方法中调用 require('view.js') 时,它将正确解析模板,感谢正确提示:)
-
欢迎您,很高兴为您提供帮助。一般来说,您可以指出您的问题有一个solution,但勾选答案左侧的复选标记。
标签: javascript jquery backbone.js underscore.js browserify