使用ASP.NET MVC,KnockoutJS和我正在使用Require JS。
我有一个视图,我传回一个保留2个Knockout视图模型的对象。为了简单起见,父视图是一个项目列表。您可以通过单击相应的按钮来创建新产品或在列表上编辑新产品。这两个按钮都将初始化一个jQuery对话框,该对话框通过从我的控制器获取返回的PartialView来填充。
在检索局部视图时,我将Knockout View模型(原始返回的RequireJS对象上的属性)绑定到该局部视图。我在创建新产品时没有任何问题,采用KO视图模型并将其保存回控制器操作。
问题
尝试将现有产品加载到PartialView时会出现问题。我需要能够使用初始值填充KO viewModel。一个可能的解决方案是,如果我可以将MVC View 模型从控制器传递到我现有的RequireJS对象,我可以使用现有的属性值初始化KO视图模型。但是,我无法弄清楚如何在我的partialview视图中访问产品列表视图中的现有返回的javascript对象。
我可以在传入的partialview上获得MVC模型的唯一错误方式是,如果我在局部视图上连接Require JS并传回 new 对象的实例并传入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 Dialog 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对象是可访问的,或者更好的设计方法是什么。
我有并且需要:
思想?
答案 0 :(得分:0)
我最终做的是拆分我的ViewModel(因为实际上有两个不同的视图),并且在我需要传递渲染的MVC Model对象的一个ViewModel上,我使它成为ViewModel之外的可访问的公共属性,所以它可以通过其他ViewModel的共享组件进行访问和序列化。