我只是在使用 MVC-Web-API 研究 knockout.js,我正在尝试创建一个 Hello World 页面,该页面将每 5 秒更新一次页面上的时间。它每 5 秒调用一次,我可以在我的控制器(断点)中看到它,但屏幕上仍然没有显示任何内容。
更新:我仍在努力,现在我已经确定我正在从服务器获取数据,每 5 秒对控制器进行一次调用,并且它正在返回我需要的 JSON(正在显示警报this) 但是页面上的 span 元素上仍然没有显示任何内容。
我实际上需要使用映射功能,因为我正在开发一个更大的网站,该网站有一个具有 50 多个属性的模型,并且不特别想通过并将它们单独映射到视图模型中。
我在下面包含了我的代码。
<span data-bind="text: TimeString"></span>
<script type="text/javascript">
var viewModel;
var getUpdates = setInterval(function () {
$.getJSON(
"/Values/Get", {},
function (model) {
alert(model.TimeString);
ko.mapping.fromJS(model, viewModel);
});
}, 5000);
$(document).ready(
function () {
$.getJSON(
"/Values/Get", {},
function (model) {
var viewModel = ko.mapping.fromJS(model);
alert(model.TimeString);
ko.applyBindings(viewModel);
});
});
function bindViewModel(model) {
ko.applyBindings(model);
}
public class HelloWorldModel
{
public DateTime TimeDT { get; set; }
public String TimeString { get; set; }
}
public class ValuesController : Controller
{
public HelloWorldModel Model = new HelloWorldModel();
[System.Web.Mvc.AcceptVerbs(HttpVerbs.Get)]
public JsonResult Get()
{
Model.TimeDT = DateTime.Now;
Model.TimeString = Model.TimeDT.ToString("HH:mm:ss");
return Json(Model, JsonRequestBehavior.AllowGet);
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}