根据服务器的初始标记填充knockoutJS视图模型对象
Populate knockoutJS view model object based on an initial markup from the server
我的web服务器返回一个带有一些结构化标记的页面。我需要使用knockoutJS将标记表示作为JSON对象——knockout视图模型对象。
页面基本上(在初始加载之后)有一个<div data-bind="foreach: ExistingNamings">
,它有几个封闭的div,这些div实际上包含了应该进入视图模型对象上ExistingNamings数组的内容。
能否根据调用ko.applyBindings
时提供的标记来敲除"解析"和现有标记并填充视图模型?
KNJS教程显示了相反的情况——我们在JS中有一个数据生成代码,它在applyBindings调用时被推送到html中。
附言:我的服务器端是ASP.NET MVC,我看到有人建议http://knockoutmvc.com/-一种为js文件生成初始化代码的方法。通过这种方式,它"就像"视图模型是通过javascript初始化的。这是处理初始数据的唯一方法,还是我确实可以解析标记?
您可以使用类似以下的剃刀将C#模型直接序列化为JSON:
var serverModel = @Html.Raw(Json.Encode(Model));
或者,很明显:
var serverProperty = @Html.Raw(Json.Encode(Model.Property));
唯一失败的一次是当您有循环引用时,如果您直接在中删除实体模型,就会发生这种情况。如果要这样做,请为它们创建ViewModel,以消除循环导航属性。
更新:
要将其放入您的viewModel,请将其添加到Razor View:的底部
<script type="text/javascript">
var serverModel = @Html.Raw(Json.Encode(Model));
//Define KO viewModel, either here, or by including via script tag in header
ko.applyBinding(new ViewModel(serverModel));
</script>
相关文章:
- 如何设置html元素填充的动画
- 如何使用jquery在填充自动完成的值后使文本框只读
- 如何通过ajax刷新JSF填充的javascript变量
- knockoutjs可观察数组
- KnockoutJS-组件-多个实例
- 用与线条相同的颜色填充多折线图上的点
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 从复选框和Selects-KnockoutJS中获取值的总和
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 用我的json数据填充JQuery DataTable
- 使用 jQuery 检查所有值是否为空或已填充
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 如何让typeahead在我的搜索栏中填充自定义参数
- 如何使用JSON字符串中的jQuery填充下拉框
- 动态填充两个下拉菜单
- KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
- knockoutjs上的绑定按键事件,可观察到未填充
- 根据服务器的初始标记填充knockoutJS视图模型对象
- 创建一个 KnockoutJS ViewModel,使用 post 命令来填充 ViewModel
- KnockoutJS使用TypeScript填充observableArray