簡體   English   中英

在element.bind中實現閉包-角度

[英]Implementing closure in element.bind - angular

我將事件綁定到指令中的元素,並希望傳遞循環變量。 如何使用閉包呢?

for(var i=0; i<events.length; i++) {
     switch(events[i]) {
               case 'focus' :
                 var m = i;
                 element.bind('focus', function(event) {
                    console.log(m);
                 });
               break;

               case 'blur' :
                 var n = i;
                 element.bind('blur', function(event) {
                    console.log(n);
                 });
               break;        
     }
 }

在上面的代碼中,我使用變量m和n,但是如果沒有變量我該怎么辦呢?

我也試過

 element.bind('focus', function(num, event) {
    console.log(num);
  }(i));

但這沒用

演示: http : //plnkr.co/edit/gwthMUkXXCQfZYr4bHLg?p=preview

創建一個單獨的函數,您可以通過傳遞i來調用它並返回一個函數,從而創建一個閉包,該閉包在上下文中具有要傳遞的數字。

function callback(num) {
   return function(event) {
     console.log(num);
   }
}

現在您可以像這樣綁定它

element.bind('focus', callback(i));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM