1

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

我需要自定义source callback,它需要两个 argumnetsrequestresponse自动完成。

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

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;
});
4

1 回答 1

2

您可以将“matcher”的调用包装到函数中:

source: function(request, response) { 
   return matcher(request, response, {isCurrentUser : true}); 
} 
于 2012-07-16T09:40:17.853 回答