繁体   English   中英

如何从PartialView访问RequireJS返回的现有javascript对象

[英]How can I access an existing javascript object passed back by RequireJS from a PartialView

使用ASP.NET MVC,KnockoutJS和我正在使用Require JS。

我有一个观点,我正在传回一个保留2个Knockout视图模型的对象。 为简单起见,父视图是项目列表。 您可以单击相应的按钮来创建新产品或在列表中进行编辑。 每个按钮都会初始化一个jQuery对话框,该对话框是通过从我的控制器获取返回的PartialView来填充的。

检索局部视图时,我将Knockout View模型(原始返回的RequireJS对象的属性)绑定到该局部视图。 创建新产品,采用KO视图模型并将其保存回控制器操作时,我没有任何问题。

问题

尝试将现有产品加载到PartialView时出现问题。 我需要能够用初始值填充KO viewModel。 一个可能的解决方案是,如果我可以将MVC视图模型从控制器传递到我现有的RequireJS对象中,则可以使用现有的属性值初始化KO视图模型。 但是,我不知道如何在我的partialview视图中访问产品列表视图上现有的返回的javascript对象。

我可以在传入的局部视图上获取MVC模型的唯一错误方法是,如果我在局部视图上连接Require JS并传递回该对象的实例并传递MVC模型,但这会破坏当前jQuery对话框调用返回到原始对象。

例:

父产品列表视图

      ......bunch of html
     </li>
   </ul>
 </div>

 @{
   <script type="text/javascript">
      require(['jquery', 'items/adminItemsList', 'jquery-validate-unobtrusive' ],    function ($, viewModel) {
        $(function () {
             viewModel.initialize({
              addUrl: '@Url.Action("Add")',
              listUrl: '@Url.Action("List")',
              editUrl: '@Url.Action("Edit")',
              deleteUrl: '@Url.Action("Delete")'
          });
      });
  });

}

jQuery对话框PartialView

      ....bunch of Html
   </div>
  </div>

 <script type="text/javascript">
    viewModel.Model(@Html.Json(Model))   //I need to be able to do something like this
 </script>

Json方法只是HtmlHelper扩展。

如何将返回的RequireJS对象设置为可访问的,或者设计此方法的更好方法是什么。

我有并且需要:

  1. 我有产品列表视图
  2. 创建/编辑产品的视图
  3. 产品列表视图javascript拥有生成创建/编辑产品视图的jQuery对话框,因此它无需破坏回调函数(即onSuccessfulSubmit ...)

有什么想法吗?

我最终要做的是拆分我的ViewModel(因为实际上有两个不同的视图),并且在一个我需要传递呈现的MVC Model对象的ViewModel上,我将其设置为ViewModel的可访问公共属性,以便可以对其进行访问并由另一个ViewModel的共享组件序列化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM