0

所以我继承了一些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
  }

});
4

2 回答 2

0

我相信你所问的可能是这样的。

window.ManagementInstancesBackupView = ManagementView.extend({

  el: ".mngmnt-main-sctn"

  [...code excluded...]

});

我们正在覆盖 el 属性,这意味着当调用此行时

var $el = this.$el.html(this.template({}))

this.$el 将引用您指定的元素。

于 2013-04-16T20:21:35.197 回答
0

雅各布,再次感谢您对此进行调查。

我找到了一个解决方案,现在我肯定会访问其他的backbonejs 教程。在代码中,我可以像这样添加选择器:

  // Append container and title
  var $el = this.$el.html(this.template({})).find('.mngmnt-main-sctn')

. 我总是对这样的事情感到困惑。您找不到任何解决问题的答案,然后您尝试了 1,000 种不同的方法。. . 然后解决方案看起来就这么简单,这样的经历让我总觉得有点傻。

于 2013-04-16T21:25:35.030 回答