骨干变量与页面容器。 。 。?

时间:2013-04-16 19:25:39

标签: javascript backbone.js

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

});

2 个答案:

答案 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种不同的东西。 。 。然后解决方案似乎很简单,经过这样的体验后我总觉得有点傻。