2015-08-11 3 views
0

Прошу прощения, если это было задано раньше, но каждый пример ajax, который я нахожу для Kendo, имеет какое-то отношение к сетке. Я новичок в Kendo и пытаюсь сделать основной вызов ajax одному из моих методов в моем контроллере, но я не могу заполнить диапазон данными. «Имя» отображается в моем сообщении, поэтому я знаю, что данные есть ... но не на мой взгляд.Kendo MVVM JQuery AJAX

 var viewModel = kendo.observable({ 
      Text: "SomeText"   
     }); 
     $.ajax({ 
      url: "/Home/GetPerson", 
      dataType: "json", 
      type: "POST", 
      success: function (data) { 
       $.extend(viewModel, data); 
       alert(data.Name) //displays correctly. 

      } 
     }) 

     kendo.bind(document.body, viewModel); 

и на мой взгляд, у меня есть это:

<span data-bind="text: Name"></span> 

Любая помощь будет принята с благодарностью ... Я для идей, если есть лучший способ для достижения этой цели.

EDIT

Ok - Я был в состоянии заставить его работать, слегка изменив код, но это, кажется неуклюжим. Есть ли более чистый способ?

 var viewModel = kendo.observable({ 
      AjaxData: null   
     }); 
     $.ajax({ 
      url: "/Home/GetPerson", 
      dataType: "json", 
      type: "POST", 
      success: function (data) { 
       viewModel.set("AjaxData", data); 
       alert(data.Name) //displays correctly. 

      } 
     }) 

     kendo.bind(document.body, viewModel); 

Вид:

<span data-bind="text: AjaxData.Name"></span> 

ответ

0

Поместите функцию kendo.bind перед вызовом Ajax.

Я испытал это, и она работает:

$(document.body).html('<span data-bind="text: Text"></span>'); 
var viewModel = kendo.observable({Text: "test 1"}); 
kendo.bind(document.body, viewModel); 
alert("The text now is " + viewModel.Text); 
$.ajax({ 
    url: "/Home/GetPerson", 
    dataType: "json", 
    type: "POST", 
    success: function (data) { 
    for (var n in data){ 
     viewModel.set(n, data[n]); 
    } 
    alert("The text now is " + viewModel.Text); 
    } 
}); 
Смежные вопросы