2012-06-07 1 views
1

Попробуйте komodo для создания виджета jquery ui. Я включил ссылку jQuery api и в .html-файле, он отлично работает. Затем я открываю файл widget.js и набираю;Поддержка jquery работает в html, но не в .js?

(function($) { 

следует

$. 

Я ожидаю получить IntelliSense здесь, но вместо этого я получаю:

пополнений не найдено. (Ошибка определения завершений)

Это расширение файла? Являются ли jquery ui виджетов неподдерживаемыми?

+0

В случае необходимости копания кажется, что файл .js никак не ссылается на jquery, поэтому он не добавляется в intellisense .. Не знаю, как решить это, к сожалению. – XeroxDucati

ответ

0

Аргумент - проблема. Без этого:

(function() 
    { 
    $. //works 
    jQuery. //works 
    ... 
    } 
); 

Komodo знает как $, так и jQuery как глобальные. Локальная область имеет приоритет, поэтому $ становится неопределенным. И наоборот, если вы передаете в JQuery вместо $ будет работать, но JQuery не будет:

(function(jQuery) 
    { 
    $. //works 
    jQuery. //does not 
    ... 
    } 
); 
+0

Имеет смысл, но разрывает jquery ui фабрика виджета, не так ли? – XeroxDucati

+0

$ === jQuery, можно ли сохранить завод, жертвуя автозаполнением jQuery, как во втором примере кода? –

2

От парней в Комодо;

Проблема заключается в том, что Комодо не знает контекст вызова анонимной функции - другие слова Комодо не достаточно умен, чтобы знать, что «JQuery» == «$» в данном случае.

Но все не потеряно, вы можете помочь Комодо, сообщив ему, что тип в таких случаях. Вот пример, который использует JSDoc, чтобы помочь определить тип "$":

(/** @param {jQuery} $ */function($) { 
     $. // will show jQuery completions now 
    })(jQuery) 

;