2016-06-20 3 views
0

익명 함수를 콜백으로 전달한 다음 호출하고 싶습니다. 아마 뭔가 간단하지만, 누락되었습니다.하지만 '잡히지 않은 타입 오류 - 콜백이 함수가 아닙니다.'오류가 발생합니다.자바 스크립트 콜백 호출

$('#someid').alphaColorPicker({ 
      callback: function() { 
       console.log("called") 
      } 
     }); 

가 그럼 난 어떤 시점에서 호출 (또는 시도) :

- (jQuery를 사용) - 이 내가 뭐하는 거지하는 새로운 객체를 생성 할 때 나는 익명의 함수로 콜백을 통과
$.fn.alphaColorPicker = function(callback) { 

    ... 
    ... 

    callback(); //this throws the error 
} 

어떻게 콜백 함수를 올바르게 호출합니까? 감사합니다. .

답변

0

당신은 함수를 직접 전달되지 않습니다, 당신이 가진 개체를 전달하는 callback 재산

당신이 보내는 가치가

$.fn.alphaColorPicker = function(options) { 

    ... 

    options.callback(); //this throws the error 
} 
3

보이게 :

{ callback: function() { ... } } 

그 함수가 아닙니다.

callback이라는 속성을 가진 개체입니다. 따라서

:

$('#someid').alphaColorPicker(function() { console.log("called") }); 
0

당신이 alphaColorPicker에 전달하는 것은 오히려 콜백 함수 만되지 않습니다 :

callback.callback(); 

또는 당신이 대신 개체의 실제 기능을 전달할 수 콜백 값을 포함하는 객체.

$('#someid').alphaColorPicker(function() { 
    console.log("called"); 
}); 

당신은 바로 callback();를 통해 호출 할 수 있습니다 : 대신 함수를 직접 전달하면

{ // When putting it within {} its a new object. 
    // Where 'callback' is a member/key of the object. 
    callback : function() { 
    console.log("called"); 
} 

.당신이 개체로 유지하려면 , 당신은 개체의 멤버를 호출하는 대신 함수로 객체 호출을 시도하여 호출 할 수 있습니다

callback.callback(); 
+1

고마워요. 알아 냈습니다.하지만 그 대답은 알 수 없지만 이유는 무엇인지 알 수 없으므로 callback.callback()을 사용 했어야합니다. – ardmark

+0

@ardmark. 문제를 해결하는 데 도움이되는 답변이 있으면 답을 올바른 것으로 표시하십시오 (및/또는 upvote). – Jite

-2

문제 발견을 함수를 통과하지 말았어야

$('#' + boxID).alphaColorPicker(function() { 
      console.log("hello") 
    }); 

그리고 난에 매개 변수를 전달하려면, 내가 이런 식으로 작업을 수행 할 수 있습니다 :

,536

callback: function() { 
       console.log("called") 
      } 

그러나 바로이 같은

$('#' + boxID).alphaColorPicker({x:styleName, y:id, callback:function() { 
     //do something 
}}); 

하지만 같은 jQuery를 이벤트 핸들러에 같은에서/매개 변수를 전달하는 방법에 대한 혼란 스러워요 :

$("#"+boxID).alphaColorPicker({x:styleName, y:this.inputID}, function(e){} 

});

어떻게 콜백에 액세스합니까? 나의 예에서, alphaColorPicker에서 callback.x와 callback.y는 분명히 사용 가능하지만, 콜백 함수는 객체로 전달되므로 객체를 호출하는 방법을 볼 수 없다.