我只是用MVC-Web-API調查knockout.js,並試圖創建一個Hello World頁面,每隔5秒更新一次頁面上的時間。它每5秒發出一次呼叫,我可以在我的控制器(斷點)中看到這一點,但屏幕上仍然沒有顯示。Knockout.js - 每5秒更新一次新頁面的值
更新: 我一直在努力,我現在已經確定我從服務器獲取數據,每5秒向控制器發出一次呼叫,並且它正在返回JSON I需要(警報顯示此),但頁面上的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)
{
}
}
}
綁定中的數據是什麼?它是一個自定義綁定?或者你的意思是''? – nemesv
updateFromJSON從哪裏來?在文檔中,它聲明'ko.mapping.fromJS(data,viewModel);' – Peter
您應該在原始的AJAX調用中使用映射插件,而不是每5秒重複一次。 –