Javascript Jquery搞砸了”;这";余烬

Javascript Jquery搞砸了”;这";余烬,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我正在尝试删除特定的余烬表单集。通常在我的控制器中,这个reffers指向控制器,但是在jquery脚本之后,这个=“p”是一个图形 模板 <p {{bind-attr class=id}}{{action 'getId'}}> Delete</p> 你可以向ofc提供与余烬相关的版本 干杯 Kristjan这看起来像是一个函数范围问题。尝试在外部函数中定义Id,稍后在相同的上下文中可以使用它 getId: function(){ var Id; //d

我正在尝试删除特定的余烬表单集。通常在我的控制器中,这个reffers指向控制器,但是在jquery脚本之后,这个=“p”是一个图形

模板

<p {{bind-attr class=id}}{{action 'getId'}}> Delete</p>
你可以向ofc提供与余烬相关的版本

干杯


Kristjan

这看起来像是一个函数范围问题。尝试在外部函数中定义
Id
,稍后在相同的上下文中可以使用它

 getId: function(){
       var Id; //declare the variable outside of the context of the jQuery anonymous function scope
       $( "p" ).on('click',function() {
         Id = $( this ).attr('class');
         console.log(Id); // Returns id properly . 
         // here this reffers to "p" normally it reffers to the controller.
       )};
        this.deleteSpecificFormset(Id); // "Id" should now be defined
 }
或者,您可以将外部作用域
this
引用保存在
self
变量中,并从回调内部调用
deleteSpecificFormset

getId: function(){
           var self = this;
           $( "p" ).on('click',function() {
             var Id = $( this ).attr('class');
             self.deleteSpecificFormset(Id);
           )};

     }

因为你在
p
的上下文中,所以
$(这个)
属于
p
那里,你怎么能说它通常指的是控制器?通常我不jquery,因此,通常它是由this调用的控制器。当然,
this.deleteSpecificFormset
行上的
Id
是未定义的。你为什么不这么想?它只在单击回调中定义,而特定的行不在单击回调中。在
上下文之外,我想你应该提到。放一个
console.log(这个)
作为
getId()
函数的第一行,并告诉我它说了什么。@Tomalak Class{u childContainers:Object,\u subscrolrs:Array[1],\u dependentValidationKeys:Object,isValid:false,personmodels:Class…}@kristjan
这个
的属性之一应该是您单击的元素ID(还要检查函数的
参数
),直接使用它,而不是创建多余的(概念上是错误的)jQuery单击绑定。
getId: function(){
           var self = this;
           $( "p" ).on('click',function() {
             var Id = $( this ).attr('class');
             self.deleteSpecificFormset(Id);
           )};

     }