Backbone.js将任意数量的行视图插入表中

时间:2014-12-18 17:37:21

标签: jquery backbone.js coffeescript

  • 我有一个显示骨干对象集合的表。
  • 我希望能够点击对象的表格行,然后在下面的一系列表格行中显示其子项目。
  • 这些孩子将在我通过RESTful端点调用得到的集合中
  • 对于该集合中的每个对象,我打算创建一个行 - 视图对象
  • 然后我想将父对象的行id传递给jquery选择器并在父对象的行之后插入视图

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

这是我的尝试:

(在子行视图上创建并调用render的父骨干视图(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中执行以下操作,如果将人员抛弃则抱歉)

1 个答案:

答案 0 :(得分:0)

免责声明 - 这不是一个很好的方式,但它确实有效。我必须创建一个隐藏表,最初,将新视图绑定到隐藏表,然后使用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>