【问题标题】:Backbone.js inserting arbitrary number of rows views into a tableBackbone.js 将任意数量的行视图插入到表中
【发布时间】:2015-02-17 14:08:12
【问题描述】:
  • 我有一个显示主干对象集合的表格。
  • 我希望能够单击对象的表格行,然后在下面的一系列表格行中显示其子项。
  • 孩子们将在我通过调用 RESTful 端点获得的集合中
  • 对于该集合中的每个对象,我打算创建一个行视图对象
  • 然后我想将父对象的行 ID 传递给一个 jquery 选择器,并在父对象的行之后插入视图

这可能吗?我习惯于将视图绑定到特定的 DOM 元素,而不是使用 JQuery 选择器随意插入它。我该怎么做?

这是我的尝试:

(在子行视图上创建和调用渲染的父主干视图(id为23的对象应在22以下渲染)

unfold: (e) ->
   @single_seg = @segments.get("23")
   row = new RP.Views.AudienceRow(
      el: this.$("#22").after(row),
      dmp_segment: @single_seg
    ) 
   console.log "row view created"
   row.render()

这是行视图中的代码:

    RP.Views.AudienceRow = Backbone.View.extend
       template: JST["dmp/AudienceRow"]

    initialize: ->
      @segment = @options.segment

    render: ->
      console.log "render function working"
      this.$el.html( @template() )
      this

现在,它还不能很好地工作,因为它替换了现有的父行。我认为这是因为我的 Jquery 选择器没有正确指定? (在coffeescript中执行以下操作,对不起,如果这会让人们失望)

【问题讨论】:

  • 我也尝试过使用 insertAfter 而不是“after”,当我这样做时,什么也没有发生 - 父行没有被覆盖,但我也看不到任何地方的子行。
  • 并不是说此评论会帮助您解决当前的问题,而是一个非常流行且稳定的 Backbone 框架,称为 Backbone.Marionette,以一种非常可扩展的方式使您的问题变得非常容易解决。 Http://marionettejs.org

标签: jquery backbone.js coffeescript


【解决方案1】:

免责声明 - 这不是一个很好的方法,但它确实有效。我必须创建一个隐藏表,最初,将新视图绑定到隐藏表,然后使用 JQuery 选择器将其移动到正确的位置:

    unfold: (e) ->
      @single_seg = @segments.get("24")
      row = new RP.Views.AudienceRow(
      el: this.$("#test"),
      dmp_segment: @single_seg) 
      console.log "row view created"
      row.render()
      this.$("#test").insertAfter("#5490690d4d6963d7420c0000")

<table id="hide-me">
    <tbody id="test">
    </tbody>
 </table>

【讨论】:

  • 如果您不使用模板引擎,这在技术上没有任何问题。你的看法是一个原始模板。我当然会利用 Backbone 的下划线模板来清理你的代码
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多