asp.net-mvc-4 – 使用knockout.js我需要从服务器调用更新我的模
发布时间:2020-12-16 09:39:14 所属栏目:asp.Net 来源:网络整理
导读:我正在使用带有knockout.js的MVC 4.0来创建一个每5-10秒调用一次数据库的页面,并使用从数据库中检索的新对象更新模型,然后使用新模型更新视图. 目前我正在进行初始的JSON get调用,这将返回模型,然后我可以将其绑定到视图.然后我再次设置getJSON调用以每10秒
我正在使用带有knockout.js的MVC 4.0来创建一个每5-10秒调用一次数据库的页面,并使用从数据库中检索的新对象更新模型,然后使用新模型更新视图.
目前我正在进行初始的JSON get调用,这将返回模型,然后我可以将其绑定到视图.然后我再次设置getJSON调用以每10秒进行一次更新,它将执行该函数并获取数据,但屏幕上看不到更新.我已经尝试在每次调用后调用ko.applyBindings,但页面上仍然没有更新,然后在几次调用后它会崩溃浏览器. 我不确定我到底做错了什么.我已经包含了以下代码的相关部分. JavaScript的: <script type="text/javascript"> var viewModel; var update = setInterval(function () { $.getJSON( "/Home/Get",{},function (model) { viewModel = model; bindViewModel(viewModel); }); },10000); $(document).ready( function () { $.getJSON( "/Home/Get",function (model) { viewModel = model; bindViewModel(viewModel); }); }); function bindViewModel(viewModel) { ko.applyBindings(viewModel); } </script> 表格显示模型 <div data-bind="foreach: { data: Events,as: 'evnts' }"> <span data-bind="text: evnts.LastUpdate"></span> <table id="EventsTable" style="display:inline; float:left;"> <tbody> <tr id="EvntsHeader" data-bind="visible: evnts.IsVisible"> <td> <span data-bind="text: evnts.Name"></span> </td> <tr> <td> <table id="MarketsTable"> <tbody data-bind="foreach: { data: evnts.Markets,as: 'markets' }"> <tr> <td id="MarketHeader"> <span data-bind="text: markets.Name"></span> <span data-bind="text: markets.NumberOfRunners"></span> </td> </tr> <tr> <td> <table id="SelectionTable"> <tbody data-bind="foreach: { data: markets.Selections,as: 'selections' }"> <tr id="Selections"> <td><span data-bind="text: selections.Number,visible: selections.IsVisible"></span></td> <td><span data-bind="text: selections.Name,visible: selections.IsVisible"></span></td> <td><span data-bind="text: selections.CurrentPrice,visible: selections.IsVisible"></span></td> <td><span data-bind="text: selections.OpeningPrice,visible: selections.IsVisible"></span></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> Controlller – JSON Get [AcceptVerbs(HttpVerbs.Get)] public JsonResult Get() { var model = new TestModel {LastUpdate = DateTime.Now}; if (TestConstants.Update == false) { GetModelFirstTime(model); TestConstants.Update = true; } else { UpdateModel(model,DateTime.Now); } return Json(model,JsonRequestBehavior.AllowGet); } 解决方法
理想情况下,您只想应用绑定一次,通常在页面加载时完成.不要在更新中调用bindViewModel,而是尝试使用:
ko.mapping.updateFromJS(viewModel,model); 如果您想在Mapping – http://knockoutjs.com/documentation/plugins-mapping.html上多读一些内容 让我知道它是否有效…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 从ASP.NET服务器控件动态添加CSS文件
- asp.net-mvc – 全局访问Ninject内核
- asp.net-mvc – ASP.NET MVC验证针对空列表框抛出NullRefer
- ASP.NET会话意外结束
- asp.net – 用html拒绝基于Ajax JSON的帖子
- asp.net-mvc – ASP.NET核心Razor SDK类库 – 不在区域目录
- asp.net – Oracle中的参数化查询问题
- asp.net – 无法打开登录请求的数据库.登录失败.用户登录失
- asp.net-mvc-3 – 如何在剃须刀视图中设置复选框?
- asp.net-mvc – 当我用fiddler检查时,VS2013 RTM每秒发出一
推荐文章
站长推荐
- asp.net – 脚本管理器和工具包脚本管理器之间的
- ASP.Net vs MVC vs WebAPI和UseTaskFriendlySync
- asp.net – 存储应用程序变量
- asp.net – UrlRewriting.Net模块IIS7等于Page.U
- 使用ASP.NET Web API作为映像服务
- asp.net – 每个会话的NH请求 – “会话已关闭!
- asp.net-mvc – 实时ASP.NET MVC Web应用程序
- asp.net – 使用FindControl:在窗体视图中访问控
- asp.net-mvc – 如何在会话较少的负载平衡环境中
- asp.net-mvc – 使用Razor的ASP.NET MVC 3 – 将
热点阅读