2012-07-16 8 views
1

에 추가 매개 변수를 전달하는 방법을 나는 다음과 같은 예를 scottgonzalez/jquery-ui-extensions자동 완성 : 응답 콜백

를 찾고 있던 나는 두 argumnets request 및 자동 완성에 대한 response을 기대 source callback을 사용자 정의 할 필요가있다.

내 질문은 다음과 같습니다. 자동 완성에 정의 된 변수에 따라 데이터를 필터링하기 위해 어떻게 소스 매개 변수에 추가 매개 변수를 전달할 수 있습니까? 예 :

currentUser = false -> 현재 사용자를 출처에서 제외해야합니다.

여기 내 코드 (1) (2)입니다.
내가 무엇을 묻고 있는지 더 잘 이해하려면 의견을 참조하십시오.
감사합니다.


(1)

// autocomplte.js 
define([ 
    'jquery', 
    'matcher' 
], function ($, matcher) { 
    "use strict"; 
    var autoComplete = function (element, options) { 
     console.log(options); // {isCurrentUser: true} 
     element.autocomplete({ 
      minLength: 3, 
      autoFocus: true, 
      source: matcher // this is a callback defined 
          // in matcher.js 
     }); 
     // other codes; 
    } 
}); 

(2)

// matcher.js 
define([ 
    'jquery', 
    'users', 
    'jqueryUi' 
], function ($, UserCollection) { 
    "use strict"; 

    var userCollection, 
     matcher; 

    matcher = function (request, response, options) { // how can I pass 
                 // an extra parameter 
                 // to this callback? 
     console.log(options); // undefined it should be {isCurrentUser: true} 
     userCollection = new UserCollection(); 
     var regExp = new RegExp($.ui.autocomplete.escapeRegex(request.term), 'i'); 
     response(userCollection.filter(function (data) { 
      return regExp.test(data.get('first_name')); 
     })); 
    }; 

    return matcher; 
}); 

답변

2

그냥 함수에 "정규"의 호출을 래핑 할 수 있습니다

source: function(request, response) { 
    return matcher(request, response, {isCurrentUser : true}); 
} 
+1

1 없다. 방법은 플러그인의 코드에서이 경우를 처리 할 수 ​​있습니다. 이는 구현 자의 구현 세부 사항이 자동 완성으로 누설 될 수 있음을 의미하기 때문입니다. 그래서 두 개의 플러그인이 유선 -> 사용자 코드 일 때해야합니다. –

관련 문제