当我点击我的饼图片段以便在我的组件中进一步使用时,我试图设置'selectedLabel'但是我遇到了'this.set()不是函数'错误,我以前没见过。
This answer表明我尝试设置属性的对象不是Ember对象,因此需要使用Ember.set(object, 'property' value)
进行更改,但这会返回空错误。
我在同一组件的其他地方使用this.get
和this.set methods
,因此我不确定他的特定对象是否存在问题,或者我是否存在范围问题。
代码:
let g = svg.selectAll("arc")
.data(mpie)
.enter().append("g")
.attr("class", "arc")
g
.on("mousemove", function(d) {
var mouseVal = mouse(this);
div
.html("Items: " + d.data.count + "</br>" + "Date: " + d.data.label)
.style("left", (event.pageX + 12) + "px")
.style("top", (event.pageY - 10) + "px")
.style("opacity", 1)
.style("display", "block");
})
.on("mouseout", function() {
div.html(" ").style("display", "none");
})
//attempt to set 'selectedLabel' property
.on("click", function(d) {
this.set('selectedLabel', d.data.label)
})
在click函数中记录'this'的控制台为我提供饼图的正确部分。
答案 0 :(得分:3)
错误的背景。如果要在函数中保留上下文,请使用箭头函数,this
将是外部对象。
```
g.on("click", (d)=> {
this.set('selectedLabel', d.data.label)
})
```