自动完成:如何将额外参数传递给响应回调

时间:2012-07-16 09:32:32

标签: javascript jquery jquery-ui requirejs

我正在查看以下示例scottgonzalez / jquery-ui-extensions

我需要自定义source callback,预计会有两个argumnets requestresponse用于自动完成。

我的问题如下: 如何根据自动完成中定义的变量将额外参数传递给源回调以过滤数据? 示例:

currentUser = false - >我需要从源中排除currentUser。

这是我的代码(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;
});

1 个答案:

答案 0 :(得分:2)

你可以将“matcher”的调用包装成函数:

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