我在Rails 3中有一个Backbone View,其中initialize有一行,用这个类动态创建一个div
initialize: () ->
$('body').append('<div class="new"></div>')
div的内容位于eco文件“new.jst.eco”中。目前的代码:
class TestApp.Views.NewDivView extends Backbone.View
el: '.new' # newly created in the initialize method.
template: JST['new']
render: ->
$(@el).html(@template())
this
initiaize: () ->
$('body').append('<div class="new"></div>')
如何在同一视图中将模板的内容添加到新创建的div中?
答案 0 :(得分:0)
我想:
var event_html = template($('#calendar-event-template').html()); // Add apt. selector for template.
$(event_html({title: title, description: description})).appendTo($(el))
其中:
$(el) = $('body .new');
会奏效。 我没有从引用中更改代码,因此您可以在那里轻松搜索。 参考: http://japhr.blogspot.in/2011/08/getting-started-with-backbonejs-view.html
答案 1 :(得分:0)
从backbone code开始,el
中首先设置this._ensureElement();
,然后调用initialize
。所以我相信这里el
不会按照你想要的方式设置。它只是一个简单的div
。
解决方案可以是body
指定el
作为视图(可能不是最佳做法),将模板内容包装在<div class="new"></div>
中。
<div class="new">
<!-- put template content here -->
</div>
并且查看你可以写(我不知道coffeescript语法,因此用javascript编写):
view = Backbone.View.extend({
el : 'body',
template : "respective_template",
render : function() {
this.$el.append(this.template());
this.setElement(".new"); /* this will change the el for the view from body to a div with class new and will delegate all bound events also if any */
return this;
}
});
我们从设置el
的代码中得出的假设可能是错误的,但您可以尝试一下。