Backbone.js 通过主干视图呈现模板html
我有一个包含三步向导的简单页面。基本上,用户填写一个文本框,单击next,这将加载下一个表单字段 我在模板中设置了所有HTML,并在主干视图中使用该模板 问题是主干网没有在模板内呈现HTML。我只是得到一个空白屏幕 这是我的模板:Backbone.js 通过主干视图呈现模板html,backbone.js,backbone-views,Backbone.js,Backbone Views,我有一个包含三步向导的简单页面。基本上,用户填写一个文本框,单击next,这将加载下一个表单字段 我在模板中设置了所有HTML,并在主干视图中使用该模板 问题是主干网没有在模板内呈现HTML。我只是得到一个空白屏幕 这是我的模板: <script type="text/template" id="assessmentTitleTemplate"> <div id="titleDiv"> <label for="title">Title
<script type="text/template" id="assessmentTitleTemplate">
<div id="titleDiv">
<label for="title">Title:</label> <input type="text" />
</div>
<div id="choicesDiv" style="display: none;">
<label for="choices">Choices:</label><input type="text" />
</div>
<div id="typeDiv" style="display: none;">
<label for="types">Types:</label>
<select name="type">
<option>red</option>
<option>blue</option>
<option>green</option>
</select>
</div>
<div id="directionControl">
<input type="button" value="Prev" /> <input type="button" value="Next" />
</div>
</script>
您的代码是正确的,但您的
initialize
正文中缺少几个参数:
initialize : function () {
this.render(); // it was this.render; before
}
您的代码没有调用该函数
此外,您的按钮缺少class
标记,否则单击时它们将无法工作。添加此选项将使它们工作:
<input type="button" value="Prev" class="prev" /> <input type="button" value="Next" class="next" />
检查此项。谢谢,这很有效,我也没有将行视图=新标题视图…或空div放入其中。作为一个小提示,我建议不要在
initialize
函数中进行渲染。它使与其他对象(如视图)的协调变得棘手,并且使测试更加困难。是的,将initialize
和render
解耦要好得多。根据我的经验,在实例化时使用el
属性是一种不好的做法(我的意思是,这样做:new Backbone.View({el:$(“…”)});
),除非它是非常主要的视图或特殊的东西。
<input type="button" value="Prev" class="prev" /> <input type="button" value="Next" class="next" />