7

estoy pasando en un objeto jQuery en una función de otro archivo a través de una matriz como la siguiente:Imitando casting con Visual Studio IntelliSense de JavaScript

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

selectedStoreDocument debe haber un objeto jQuery, sin embargo Visual Studio IntelliSense nunca lo hará reconocerlo como tal. He intentado añadir extendiéndose selectedStoreDocument con $.extend:

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

Sin embargo, extender selectedStoreDocument acabó con todos mis métodos de jQuery (.each, .find, etc.).

¿Cómo puedo obtener selectedStoreDocument para que aparezca como un objeto jQuery en IntelliSense? Tenga en cuenta que estoy trabajando en Visual Studio 2010.

Respuesta

6

he creado un archivo separado para las funciones de utilidad, y un segundo archivo para las funciones de utilidad + VSDoc.

utilities.js:

function castToJQuery(item) 
{ 
    return item; 
} 

utilidades de 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"); 
} 

Ahora puedo llamar castToJQuery en cualquiera de mis archivos aguas abajo para que Visual Studio pensar una propiedad dinámica es un jQuery objeto.

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

Visual Studio ahora trabaja con Intellisense para mis urlParams dinámicos [ "storeDocument"].

+0

Enfoque interesante. ¿Puedes publicar una captura de pantalla de cómo se ve? – Mrchief

+0

Trataré de agregar algunas capturas de pantalla más tarde, hoy –

2

No se puede obtener intellisense para las propiedades añadidas dinámicamente. Es necesario definirlos de forma estática (en un archivo o vsdoc JS):

$.selectedStoreDocument = function() { 
    ///<summary>A Selected Store Document</summary> 
}; 
+0

Así que no hay manera de "echar" algo para intelisense? –

+0

Javascript no es un lenguaje compilado, ni VS tiene un proveedor de servicios lingüísticos que pueda evaluar el idioma y proporcionar C# como intellisense para usted. – Mrchief

+0

@Pedar, deberías probar ReSharper 6, su motor de JavaScript es considerablemente más robusto que las instalaciones de stock VS para propósitos de intellisense (y refactorización, etc.) –

1

Puede especificar la información de la documentación para una variable de la siguiente manera:

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

Para más información ver http://msdn.microsoft.com/EN-US/library/hh542722(VS.110).aspx

+0

¿No es solo para VS2012? – IvanH

Cuestiones relacionadas