1

我正在尝试以编程方式将行“添加”到我使用 d3 创建的表中。

        @appendLine line for line in arr
appendSingleColLine:(line)->
        newModel = new PhoenixModel()
        newModel.set({logLine : line})

        view = new RowView({model:newModel})
        view.render()
class RowView extends Backbone.View
    el : "tr"
    row : {}
    columns : {}
    line : {}
    tbody : {}

    render:()->
        #console.log "in render"
        @line = @options.model.get("logLine")
        @columns = @options.columns
        @tbody = @options.tbody
        @row = @tbody.selectAll('tr').data(@line).enter().append("tr")
        console.log "checking row"
        console.log @line
        console.log @row
        @row.selectAll("td").data(@line).enter().append("td").text((d)-> 
            return d
        )

这样做的结果是第一个数据被输入了 3 次。当我查看@row 时,数组中的条目都是空的,这就是我认为我的问题正在发生的原因。但是,我不知道为什么会这样,我认为我正在绑定新数据。

这是怎么回事?

4

1 回答 1

1

很难说这里到底发生了什么。一个 jsfiddle 可以提供帮助。我的猜测是问题出在您绑定数据的方式上。您正在构建一个表,这意味着绑定二维数据,这是一种特殊情况。

在此处查看表格示例:https ://github.com/mbostock/d3/wiki/Selections#data 。注意第二个data()绑定需要如何使用函数。这很可能是问题所在。

与 d3 或您的问题无关,但仅用于 style:@options.model可以替换为@modelBackbone 自动为您设置的。

于 2013-06-25T23:03:09.207 回答