部分视图无法识别Knockout JS

时间:2014-08-23 11:47:16

标签: c# javascript asp.net-mvc knockout.js partial-views

我有一个主页面,其中包含一些javascript,从主页面加载的局部视图,以及从局部视图页面加载的第二个局部视图。

主页引用了一个javascript源文件,其中包含敲门js,其中包含许多ko.observable。

这些ko.observable按预期用于主页面,但是当模型通过时,它们无法识别局部视图和第二部分视图的值。

是否真的需要在每个视图中引用相同的javascript文件?

1 个答案:

答案 0 :(得分:0)

您不需要添加对部分页面的引用,而是首先通过ajax调用加载部分视图,然后将绑定应用到回调函数中,如下例所示:

ASP.NET MVC控制器:

public class TestController:Controller
{
  [HttpGet]
  public ActionResult MyView()
  {
    return PartialView("_MyView");
  }

}

HTML和Javascript

    <div id="ContentHolder" ><div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script>

    $.get('Test/MyView', function(view){
        var _contentHolder = document.getElementById('ContentHolder');

       _contentHolder.html(view);

        ko.applyBinding(self, _contentHolder);
    })
    </script>