2011-05-02 17 views
5

Estoy probando knockout.js en un proyecto MVC3 de prueba. Tengo la siguiente estructura:¿Por qué intellisense no funciona en mi objeto ko?

Project Root 
    Scripts 
    jquery-1.4.4.js 
    knockout-1.2.0.debug.js 
    etc... 
    Views 
    Home 
     Index.cshtml 
    Shared 
     _Layout.cshtml 
    HTMLPage1.htm 

En mi archivo _Layout.cshtml, tengo los siguientes bloques de script:

<script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.tmpl.js" type="text/javascript"></script> 
<script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script> 

En mi archivo Index.cshtml, estoy tratando de utilizar el objeto ko en mi bloque de secuencia de comandos. Funciona bien, pero en el diseñador VS, no obtengo ninguna inteligencia sobre el objeto ko en sí.

Si abro un archivo HTML plano en el nivel de proyecto raíz y coloco un bloque de script allí, obtengo intellisense en el objeto ko.

¿Qué es lo que tengo mal? ¿Por qué Intellisense no puede ver el objeto ko en mi archivo .cshtml?

Tomo nota en el resultado de la depuración de VS, me sale el siguiente: Mensaje

Javascript Intellisense: JSIntellisense: Interno/ventana (18: 4): Función de espera
Javascript Intellisense mensaje: JSIntellisense: Interno/window (19: 8): 'ko' no está definido
Javascript Intellisense Mensaje: JSIntellisense: Internal/window (18: 4): Función esperada
Javascript Intellisense Mensaje: JSIntellisense: Internal/window (19: 8): ' ko 'no está definido
Mensaje de Javascript Intellisense: JSIntel lisense: interno/ventana (18: 4): Función esperada
Javascript Intellisense Mensaje: JSIntellisense: interno/ventana (19: 8): 'ko' no está definido
Javascript Intellisense Mensaje: JSIntellisense: Interno/ventana (18: 4): Función de espera
Javascript Intellisense mensaje: JSIntellisense: interno/ventana (19: 8): 'ko' no está definido
etc.

Respuesta

11

Ah, figurado a cabo. Necesito que mis bloques de scripts hagan referencia a mis archivos .js en el archivo .cshtml real.

Como en:

@if (false) 
{ 
    <script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script> 
    <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> 
    <script src="/Scripts/jquery-ui.js" type="text/javascript"></script> 
    <script src="/Scripts/jquery.tmpl.js" type="text/javascript"></script> 
    <script src="/Scripts/knockout-1.2.0.debug.js" type="text/javascript"></script> 
} 

El @if (falso) significa que no se deje incluido en tiempo de ejecución (y así utilizar las secuencias de comandos incluye la de mi maestro .cshtml archivo).

Cuestiones relacionadas