D3读取输入值



我试图添加一个输入html元素d3和读取文本值时,它被改变:

$scope.addField = function (parent) {
        parent.append("br");
        parent.append("input")
            .attr("type", "input")
            .attr("placeholder", "Add a comment ...")
            .property("value", function (value) {
                console.log("value: " + value);     // logs: "value: undefined"
            })
            .text(function (value) {
                console.log("text: " + value);      // logs: "text: undefined"
            })
            .on("input", function (value) {
                console.log("oninput: "+ value)     // logs: "oninput: undefined"
            })
            .attr("id", ID_PREFIX + $scope.selection.id)
            .attr("value", "hallo")
            .on("change", function(d, i) {
                console.log("change: " + d + " " + i); // logs: change: undefined 0
                $scope.$apply(function () {
                    const elem = d3.select("#" + ID_PREFIX + $scope.selection.id)
                                    .select("input");
                    console.log(elem);
                    // returns the html element but without the proper text information
                    $scope.setAnnotationComment({item: $scope.selection}, $scope.comment);
                });
            });
        parent.append("br");
};

因此,我无法获得输入字段的更改值。即使分配输入字段一个唯一的id,并获得html元素d3的唯一id不会返回字段"文本","值"或类似的东西。当我用chrome控制台检查html时,输入标签如下:

<input type="input" placeholder="Add a comment ...">

所以没有赋值属性

还有其他可能吗?我想避免选择所有输入字段,如:

d3.selectAll('input')

更新:这里是JSFiddle的更新版本:jsfiddle.net/jeannedark/8e96hef6/7这个用例与d3可能吗?如果没有,什么是最好的方法/框架来实现这一点,不附加一个平面html元素。我真的很欣赏d3添加属性等的风格

这个问题把我逼疯了,直到我翻阅D3js文档寻找其他东西时,发现了这个:

一些HTML元素有特殊的属性,不能用属性或样式来寻址,比如表单字段的文本值和复选框的checked布尔值。

使用selection.property(name[, value])获取所需数据

最新更新