Имитация приведения с помощью Visual Studio JavaScript IntelliSense - PullRequest
7 голосов
/ 26 июля 2011

Я передаю объект jQuery в функцию из другого файла через массив, подобный следующему:

$(document).bind("loadStoreDisplayCallGoals", function(source, urlParams)
{
    var selectedStoreDocument = urlParams["storeDocument"];
}

selectedStoreDocument должен быть объектом jQuery, однако Visual Studio Intellisense никогда не распознает егонапример.Я попытался добавить расширение selectedStoreDocument с помощью $.extend:

// cast selectedStoreDocument to a jQuery type
$.extend(selectedStoreDocument, $);

Однако расширение selectedStoreDocument уничтожило все мои методы jQuery (.each, .find и т.

Как я могу заставить selectedStoreDocument отображаться как объект jQuery в IntelliSense?Обратите внимание, что я работаю в Visual Studio 2010.

Ответы [ 3 ]

6 голосов
/ 26 июля 2011

Я создал отдельный файл для служебных функций и второй файл для служебных функций + VSDoc.

utilities.js:

function castToJQuery(item)
{
    return item;
}

коммунальные-vsdoc.js:

function castToJQuery(item)
{
    /// <summary>
    ///     1: $(item) - "Casts" the specified item to a jQuery object for the sake of Intellisense
    /// </summary>
    /// <returns type="jQuery" />
    return $("dummy");
}

Теперь я могу вызывать castToJQuery в любом из моих нижестоящих файлов, чтобы Visual Studio считала динамическое свойство объектом jQuery.

var selectedStoreDocument = castToJQuery(urlParams["storeDocument"]);
selectedStoreDocument.find("products");

Visual Studio теперь работает с Intellisense для моих динамических urlParams ["storeDocument"].

2 голосов
/ 26 июля 2011

Вы не можете получить intellisense для динамически добавленных свойств.Вам нужно определить их статически (в файле vsdoc или js):

$.selectedStoreDocument = function() {
     ///<summary>A Selected Store Document</summary>
};
1 голос
/ 16 марта 2012

Вы можете указать информацию о документации для переменной следующим образом:

$(document).bind("loadStoreDisplayCallGoals", function(source, urlParams)
{
    /// <var type="jQuery"/>
    var selectedStoreDocument = urlParams["storeDocument"];
    selectedStoreDocument._
}

Для получения дополнительной информации см. http://msdn.microsoft.com/EN-US/library/hh542722(VS.110).aspx

...