什么时候不应该使用自我渲染视图?

时间:2015-07-07 13:48:18

标签: backbone.js

我一直在研究this Backbone教程,并且遇到了这段代码:

flush

作者解释说var LibraryView = Backbone.View.extend({ el:$("#books"), initialize:function(){ this.collection = new Library(books); this.render(); }, ... }); 在调用构造函数时使视图呈现。

您何时不希望视图自我渲染?

1 个答案:

答案 0 :(得分:2)

render方法只是使用jquery的var seqIcon = 'img/BatchJobIcon.gif'; var jobIcon = 'img/Logo32x32.gif'; var html, $container = $('#jobContainer'); function formHtml(row) { return '<div id="' + row.JobName + '" class="outerDiv">' + '<div class="middleDiv">' + '<div class="innerDiv">' + '<img id="image" src=' + jobIcon + ' />' + '<img id="image" src=' + (row.JobType == 1 ? "img/BatchJobIcon.gif" : jobIcon) + '/>' + '<h3>' + row.JobName + '</h3>' + '<p class="JobPath">' + row.JobPath + ' ' + row.JobStatus + ' ' + row.JobType + '</p>' '<p> <input type="button" id="btnRunJob" class="btn-minimal" value="Run Job" />' + '<input type="button" id="btnGetLog" class="btn-minimal" value="Job Log" />' + '</p>' + '</div>' + '</div>' + '</div>'; } result.forEach(function (row, i) { html = formHtml(row); $container.append(html); }); html方法向DOM添加HTML。您选择在视图上调用render方法的位置是架构选择。

Backbone据说应用MV *模式,其中模型直接绑定到视图 因此,视图将在实例化时呈现自身,并且能够在模型更改时呈现自身。

然而,Backbone给开发人员留下了很多决定,并且是一个灵活的库。从技术上讲,没有什么可以阻止您使用管理视图流的控制对象;因此,另一个对象也可以实例化并重新呈现视图。

append

最后,var view = new Bb_View(); view.render(); 只是视图上的一个方法,您也可以定义自己的方法。我从视图外部调用视图上的自定义方法的一个例子就是我继续引用一组视图 当事件发生时,我遍历视图,我可能会添加一些条件,然后根据条件在特定视图上调用自定义方法。