Как использовать jQuery в контроллере паруса.(«$ Не определен»)

StackOverflow https://stackoverflow.com//questions/24042304

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

}
.

Это было полезно?

Решение

Вы должны учитывать, что:

  1. Контроллер живет на стороне парусников, что означает: на стороне сервера (Nodejs).
  2. Грузкий файл впрыскивает библиотеку jQuery к HTML, которая будет интерпретироваться в стороне клиента (браузера).
  3. Вот почему контроллер не способен увидеть библиотеку 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, появится ошибка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top