Knockoutjs проблемы с binding
Всем привет! Собственно-начал разбираться с knockout, пишу приложение-расписание занятий. Излагаю суть вопроса: Есть такой вот объект:
function Lesson (time){ self=this; self.name = 'Пусто'; self.teacher = 'Вася'; self.room = ''; self.time = time; } И сама модель function SheduleViewModel() { // Data var self = this; self.dayOfWeek = ['ПН','ВТ','СР','ЧТ','ПТ','СБ']; self.timeLessons = {head:'Время',body:['08:30-09:55',"10:10-11:35","11:50-13:15","13:45-15:10","15:25-16:50","17:05-18:30","18:40-20:00"]}; self.initShedule = function(){ var temp = []; for(var i = 0; i < self.dayOfWeek.length; ++i) { var dayLessons = []; for(var j = 0; j < self.timeLessons['body'].length; ++j ){ dayLessons.push(new Lesson(self.timeLessons['body'][j])); } temp.push({dayName: self.dayOfWeek[i],lessons:dayLessons}) } return temp; } self.shedule = self.initShedule(); //вызывается при нажатии на элемент. self.selectLesson = function(lesson){ console.log(lesson.teacher); } }; ko.applyBindings(new SheduleViewModel()); Суть вот в чем. Мне надо отслеживать изменение полей объекта Lesson. В коде выше все работает. Если я нажму на элемент( на котором data-bind="click:$root.selectLesson" ) то в консоль выводиться слово "Вася". Если же я сделаю self.teacher = ko.observable('Вася'); То в консоль выводиться: function c(){if(0<arguments.length)return c.equalityComparer&&c.equalityComparer(d,arguments[0])||(c.O(),d=arguments[0],c.N()),this;a.i.lb(c);return d} Почему не получается наблюдать за объектом, и откуда берется эта функция я не понимаю. Заранее всем спасибо! |
Часовой пояс GMT +3, время: 19:33. |