如何在 d3.drag 上下文中调用 backbone.model 的 this

How to call backbone.model's this inside d3.drag context

我有以下具有 d3.drag 功能的 backbone 模型。我无法在 d3 的上下文中调用模型的 this

我通过定义变量 model=this 并通过 model.draw.. 调用找到了类似问题的解决方案,但如何将其添加到 d3 的拖动中?

   DataMapper.Models.Anchor = Backbone.Model.extend({
                defaults: {
                        //...
                },
                initialize : function(){
                        d3.select("#anchor").call(this.dragAnchor); //make the #anchor draggable
                },
                dragAnchor: d3.drag()
                        .on("start", function (d) {
                            console.log("something"); //it prints
                            var thisDragY = this.drawSomething(a,b,c); 
                            // this.drawSomething is not a function
                            // because inside d3.drag(), 'this' refers to #anchor
                            // what I want to refer is the model
                        })
                        .on("drag", function (d) {})
                        .on("end", function (d) {}),
                drawSomething: function (parent, cx, cy) {
                   //code
                }
            });

有没有办法使用下划线的 bind 来达到我想要的目标? Link to a useful article.

团队成员找到了解决方案 - 将拖动作为函数调用。

   DataMapper.Models.Anchor = Backbone.Model.extend({
                defaults: {
                        //...
                },
                initialize : function(){
                        d3.select("#anchor").call(this.dragAnchor()); //make the #anchor draggable
                },
                dragAnchor: function(){
                        var self=this;
                        return d3.drag()
                           .on("start", function (d) {
                               console.log("something"); //it prints
                               var thisDragY = self.drawSomething(a,b,c); 
                           })
                           .on("drag", function (d) {})
                           .on("end", function (d) {}),
                drawSomething: function (parent, cx, cy) {
                   //code
                }
            });