我正在学习如何在我正在处理的项目中使用 Backbone,并且对在 Backbone 中解耦视图和模板时的最佳实践有疑问。特别是动态生成的View.el
和View.$el
.
在文档中它说 View.elis created from the view's tagName, className, id and attributes properties, if specified. If not, el is an empty div.
问题一:
在设置视图的属性、id 和 className 时,这是否不会高度耦合视图和模板文件,以至于如果设计人员想要调整模板,他们将需要访问视图?
例如,我有一个 jQuery Mobile 列表,其中的属性和类名决定了列表的外观:
<li data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-icon="arrow-r" data-iconpos="right" data-theme="c"
class="ui-btn ui-li ui-li-has-thumb ui-btn-up-c"></li>
如果我使用 Backbone 视图的 tagName、attributes 和 className 属性,那么所有这些都将存储在视图文件中而不是模板中。这不是一个坏习惯还是我错过了什么?
问题2
为了避免上述情况,我是:
A. 根本不使用View.el
或相关的属性(tagName、attributes 等),而是直接将其放在模板文件中。
B.通过调用我的 render() 函数来编译我的模板underscore.template()
并将其注入到属性中:View.$el
View.$el.html(_.template(template, data))
当它是根视图时,将目标 id 传递给 View 构造函数并在我的渲染函数调用中:
$(this.target).append(View.$el.html());
或者,如果它是一个调用另一个视图的视图:
$("#target_id").append(view.render.$el.html());
这是一个好的方法/实践还是我应该使用其他一些最佳实践?