У меня есть основной плагин JQuery определен как например:Использование машинописный Bloodhound внутри плагин JQuery
(function($){
var new_row_num = 0;
// Test data for now
var courses = [
{
course_num: "M118",
title: "Finite Math"
},
{
course_num: "M119",
title: "Calculus"
}
];
// constructs the suggestion engine
var courseSuggestions = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('course_num'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: courses
});
var methods = {
init : function(options) {
},
add : function() {
// Adds a new row to my table
}
};
$.fn.studentCourseBox = function(methodOrOptions) {
if (methods[methodOrOptions]) {
return methods[ methodOrOptions ].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof methodOrOptions === 'object' || ! methodOrOptions) {
// Default to "init"
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + methodOrOptions + ' does not exist on jQuery.studentCourseBox');
}
};
})(jQuery);
Идея заключается в том, что каждый раз, когда я добавить новую строку, используя этот плагин:
$('#myWidget').studentCourseBox('add')
,
он автоматически инициализирует поле Typeahead в одном из столбцов. К сожалению, я получаю ошибку Javascript «ReferenceError: Bloodhound не определен» при первой ссылке на Bloodhound.
Однако, если я перемещаю инициализацию переменных для courses
и courseSuggestions
вне плагина и передаю их через метод init
, он работает нормально. Итак, я знаю, что Bloodhound работает в моем скрипте, он просто не работает внутри моего плагина.
Что я делаю неправильно? Я чувствую, что это проблема, но я пробовал $.Bloodhound
, $.fn.Bloodhound
и т. Д., И ничего не работает.