Tengo el siguiente en mi MVC Diseño (en la parte inferior):

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/viewmodels")

Veo knockout carga en mi ficha Fuentes en herramientas de desarrollo.

En uno de mis puntos de vista, tengo que hacer lo siguiente:

<script type="text/javascript">ko.applyBindings(@Html.Raw(Json.Encode(Model)));</script>

Pero este me da un error: ko is not defined

Por qué está pasando esto, a pesar de knock-out que se cargan?

estás utilizando un procesador AMD como gestor de require.js en algún lugar de su aplicación?
no, yo no soy… sólo tengo el Render en mi Diseño y, a continuación, una referencia a ko en una vista.
puedes publicar lo que el «ver código fuente» de salida se parece?
Lo siento… me acabo de mudar el Render(knock-out) a la parte superior de mi página de diseño y se comenzó a trabajar. Ahora estoy corriendo en un problema diferente: stackoverflow.com/questions/18840173/…

OriginalEl autor RobVious | 2013-09-17

4 Comentarios

  1. 9

    El problema era que mi vista se estaba cargando antes de octavos de final. Empujando hacia la parte superior de mi Diseño.cshtml:

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/knockout")

    Se ha solucionado el problema.

    Puesto que usted está utilizando jquery, puede aprovechar de Jquery ondom listo función y agregar ko referencias y vinculante dentro de ella. De esta manera, incluso si usted necesita para mantener las referencias debajo de la vista (que es una buena idea por razones de rendimiento), javascript analizador no se quejan.
    Podría tal vez proporcione un ejemplo de cómo se haría? Yo también soy un poco noob con knockout y secuencias de comandos de cliente

    OriginalEl autor RobVious

  2. 2

    usted debe poner @ko.Aplica(Modelo) en la parte inferior de la página, en lugar de tirar de secuencias de comandos en la parte superior de la página.

    El siguiente código va a resolver su problema

    @section scripts{
        @ko.Apply(Model)
    }

    Recuerde que debe declarar un scripts sección en la vista de maquetación, de lo contrario causará una excepción

    @RenderSection("scripts", required: false)

    OriginalEl autor Diego Mendes

  3. 0

    He solucionado mi problema mediante la eliminación de mi script de línea al final de mi Índice.cshtml de archivo:

    <script src="~/Scripts/ConfigGroup.js"></script>

    y reemplazarlo con:

    @section Scripts {
        @Scripts.Render("~/Scripts/ConfigGroup.js")
    }

    Supongo sección de Scripts se carga en una hora diferente que incluye.

    ahora mi referencia a ko. en ConfigGroup.js script ya no tiene errores

    OriginalEl autor JJ_Coder4Hire

  4. 0

    En Mi escenario @RobVious respuesta era parte, pero no se completó. He seguido estos pasos para la solución.

    1. Agregar a continuación de las secciones en el encabezado <head> compartido de diseño (ex _Layout.cshtml)

      @Scripts.Render("~/bundles/jquery")
      @Scripts.Render("~/bundles/bootstrap")
      @Scripts.Render("~/bundles/knockout")

    2. A continuación, Agregue knockout código del documento listo etiqueta como la siguiente.

      $(document).ready(function () {
      function AppViewModel() {
      this.firstName = "Bert";
      this.lastName = "Bertington";
      }
      ko.applyBindings(new AppViewModel());
      });

    3. si esto no funciona compruebe si knockout.js es de carga o no como el de abajo, el uso de inspeccionar elementos
      ko.applyBindings da error de

    OriginalEl autor Menuka Ishan

Dejar respuesta

Please enter your comment!
Please enter your name here