所以我继承了一些backbone.js代码,今天需要对它进行更改。编写原始代码的人正在度假。我只是在研究backbone.js,我几乎是一个骨干新手。
下面的代码可以正常运行并完成它的设计。只有一个问题:模板文件的内容(见下文)会呈现为特定的HTML页面。
我的问题是,我不完全理解代码的流程,以便在该HTML页面上插入对实际容器的引用的方式和位置做出有根据的猜测,以及获取要在该容器内显示的内容。
我需要此函数输出的容器的类名是.mngmnt-main-sctn
。这可能吗?
window.ManagementInstancesBackupView = ManagementView.extend({
events: _.extend({
}, ManagementView.prototype.events
),
initialize: function() {
this.model = this.options.model
this.collection = this.options.collection
this.template = _.template($('#instances-management-backup-template').html())
},
render: function() {
var instances = this.collection
// Append container and title
var $el = this.$el.html(this.template({}))
instances.each(function(instance) {
// THIS IS THE CONTAINER THAT SHOULD GET STUFF APPENDED TO:
// $(".mngmnt-main-sctn")
$el.append(this.renderParent(instance));
instance.get('nic').each(function(nic) {
$el.append(this.renderChild(nic));
}, this)
}, this)
return this
},
renderParent: function(instance) {
return new ManagementInstancesBackupParentView({model: instance}).render().$el
},
renderChild: function(nic) {
return new ManagementInstancesBackupChildView({model: nic}).render().$el
}
});
答案 0 :(得分:0)
我相信你所要求的是这样的。
window.ManagementInstancesBackupView = ManagementView.extend({
el: ".mngmnt-main-sctn"
[...code excluded...]
});
我们正在覆盖el属性,这意味着当这一行被称为
时var $el = this.$el.html(this.template({}))
这个。$ el将引用您指定的元素。
答案 1 :(得分:0)
雅各布,再次感谢你对此进行调查。
我找到了一个解决方案,现在我肯定会打出额外的backbonejs教程。在代码中,我能够像这样添加选择器:
// Append container and title
var $el = this.$el.html(this.template({})).find('.mngmnt-main-sctn')
。 我总是被这样的东西困惑。你找不到任何答案来解决这个问题,然后你会尝试1000种不同的东西。 。 。然后解决方案似乎很简单,经过这样的体验后我总觉得有点傻。