Как использовать jQuery в контроллере паруса.(«$ Не определен»)
-
21-12-2019 - |
Вопрос
Я пытаюсь реализовать синхронизированные несколько запросов находки в функции контроллера. Jquery.js помещается до ** / * в гербфиле.Я использую паруса V0.9.4. Первая ошибка:
"$ is not defined"
.
возникает здесь:
var dfd = $.Deferred();
.
Я новичок в JS и относительно новое, чтобы паруса и моими довольно долгими исследованиями для этого вопроса были абсолютно безотлагательно.
Спасибо заранее, Мартин
PS: Грунтфильский выдержка:
var jsFilesToInject = [
'linker/js/socket.io.js',
'linker/js/sails.io.js',
'linker/js/app.js',
'linker/js/jquery.js',
'linker/js/jquery.validate.min.js',
'linker/**/*.js'
];
.
Экспозиция контроллера:
var dfds = [];
var seriesLists = [];
function checkForWord(word,place) {
var dfd = $.Deferred();
Series.find({seriesname:{'contains':'word'}}, function (err,sers) {
seriesLists[place] = sers;
dfd.resolve();
});
return dfd.promise();
}
for(var k=0;k<words.length;k++) {
dfds.push(checkForWord(words[k],k));
}
$.when.apply($, dfds).then(function() {
console.log("seriesLists:",seriesLists);
});
}
. Решение
Вы должны учитывать, что:
- Контроллер живет на стороне парусников, что означает: на стороне сервера (Nodejs).
- Грузкий файл впрыскивает библиотеку jQuery к HTML, которая будет интерпретироваться в стороне клиента (браузера).
Вот почему контроллер не способен увидеть библиотеку jQuery.Если вы хотите иметь jQuery на стороне сервера (который я считаю как-то нечетным), вы должны включить его с NPM:
npm install jquery
.
или более подходящий:
npm install node-query
.
В любом случае, если вы ищете, - это обещает поддержку, то вы можете просто использовать Q (что является одним из самых используемых библиотек обещаний там, либо для сторон с клиентами, либо на стороне сервера).На стороне сервера вы можете установить q понравиться это:
npm install q
.
(если, конечно, я не совсем не так, и вы делаете контроллер "клиентской стороне" :).
Другие советы
Проверьте заказ, в котором вы включаете jQuery на голове.
Убедитесь, что он будет включен один раз на страницу и до этой строки
var dfd = $.Deferred();
. на парусах версии 0.11 jQuery нагрузка после загрузки, для сначала поместите jQuery, и не отображайте ошибку, мое приложение должно быть загружено jQuery, прежде чем для начала загрузки работать правильно
Вы должны перейти на этот путь на задачах / Pipe / Pipels.js, и поместите эту «js / зависимости / jQuery-версию вашего jQuery-js» внутри VAR JSFILESTOINJECT= [-HERE-] между 'js/dependonds/sails.io.js 'и' js / Зависимости / ** / *. JS 'Как следующие:
// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [
// Load sails.io before everything else
'js/dependencies/sails.io.js',
//For make your jquery load first
'js/dependencies/jquery-2.1.1.js',
// Dependencies like jQuery, or Angular are brought in here
'js/dependencies/**/*.js',
// All of the rest of your client-side js files
// will be injected here in no particular order.
'js/**/*.js'
];
.
Например, это плохое конфигурация:
var jsFilesToInject = [
'linker/js/socket.io.js',
'linker/js/sails.io.js',
'linker/js/app.js',
'linker/js/jquery.js',
'linker/js/jquery.validate.min.js',
'linker/**/*.js'
];
.
Потому что jQuery загрузится после того, как App.js, если в вашем приложении вы будете использовать функцию jQuery, появится ошибка