我使用下划线模板来渲染我的页面。我使用时会出现问题:
$(function(){
console.log($('.input-placeholder'));
});
我有时可以访问它们,有时它只是不起作用,因为在文档加载后页面会被渲染。
所以我用
$('#application').html(_.template('<div class="input-placeholder"></div>', {}));
它有时会打印到控制台,它找到了输入占位符,但并不是所有时间。如何确保在加载模板后触发$(function(){})。
由于
答案 0 :(得分:1)
在渲染方法中阅读模板:
Backbone.View.extend({
render: function(){
var html = _.template($("#my-template"));
this.$el.html(html);
}
});
然后等到DOMReady事件触发后再启动应用程序,创建视图实例并进行渲染。
答案 1 :(得分:0)
我不确定您要实现的目标,但您可以尝试使用Derick解决方案的替代方案。
Backbone.View.extend({
el: document.createElement('div'),
template: null,
render: function(){
if(this.template === null){
this.template = _.template($('#my-template'));
}
this.$el.html(this.template({}));
}
});
请注意,如果你这样做:
var something = _.template('<div><%= haha %></div>');
something
成为一个函数,当你提供数据时会给你html,你不应该每次都重新编译。