我正在尝试以编程方式将“添加”行添加到我使用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
)
结果是第一次数据输入三次。当我查看@row时,数组中的条目都为null,这就是我认为我的问题出现的原因。但是,我不知道为什么会发生这种情况,因为我认为我正在绑定新数据。
发生了什么事?
答案 0 :(得分:1)
很难说这到底发生了什么。一个jsfiddle可以帮助。我的猜测是问题在于你绑定数据的方式。您正在构建一个表,这意味着绑定二维数据,这是一种特殊情况。
在这里查看表格示例:https://github.com/mbostock/d3/wiki/Selections#data。
请注意第二个data()
绑定如何使用函数。这可能就是问题所在。
与d3或您的问题无关,但仅针对样式:@options.model
可以替换为@model
,Backbone会自动为您设置。