ASP.NET MVC: Просмотр и отладка JSON объектов при использвании Knockout

Снова Knockout

Самое тяжелое непривычное при работе с knockout, так это, на мой взгляд, отладка и просмотр данных (ViewModel), который привязывается к форме (представление) через ko.applyBinding(site.mv.myViewModel). Пришлось перебрать огромное количество способов. То одно невозможно узнать, то другое нельзя увидеть. Но вот, недавно, на новогодних выходных, получилось увидеть то что хотелось, причем в «максимальной комплектации». 🙂

Пример модели

Допустим, у меня есть модель на javascript, вот такой незамысловатой сложности:

1: (function (site) { 2: site.vm.Person = function () { 3: var self = this; 4: self.Id = ko.observable(); 5: self.Name = ko.observable(); 6: self.Description = ko.observable(); 7: self.Gender = ko.observable(); 8: self.IsMember = ko.observable(); 9: self.Age = ko.observable(); 10: self.Weight = ko.observable(); 11: self.Country = ko.observable(); 12: self.MemberDate = ko.observable(); 13: self.DepartmentId = ko.observable(); 14: self.Info = ko.computed(function () { 15: if (self.Name() & self.Age() & self.Description()) 16: return self.Name() + » » + self.Age() + » » + self.Description(); 17: else { 18: return»Нет данных»; 19: } 20: }); 21: }; 22: 23: site.vm.Order = function() { 24: var self = this; 25: self.Number = ko.observable().extend({required: true, number:true}); 26: self.Person = ko.observable(new site.vm.Person()).extend({required:true}); 27: }; 28: })(site);

Вид формы:

 

Код для просмотра модели

Где угодно на форме (представление) вставляем такой код (извините, пришлось вставить картинку, потому что knockout пытается применить binding):

Или можно обернуть в knockout:

1: ko.utils.debugInfo = function (items) { 2: return ko.computed(function () { 3: // новое, а в Knockout 2.1. следует использовать конструкцию 4: // JSON.stringify(ko.toJS(viewmodel), null, 2) 5: return ko.toJSON(viewmodel, null, 2); 6: }); 7: };

И теперь на форме (если код выполнился правильно и без ошибок) можно увидеть разверную информацию по ViewModel:

Всё как на лодони, а благодаря «notifyPropertyChanged» в исполнении knockout, информация еще и «живая».

Удачи уважаемые. Да прибудет с вами сила.

Подробнее: http://feedproxy.google.com/~r/blogmusor/~3/Z73uc_x_R7k/103

Источник: lred.ru

Оцените статью
новости для мужчин