Всем привет! Собственно-начал разбираться с 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}
Почему не получается наблюдать за объектом, и откуда берется эта функция я не понимаю. Заранее всем спасибо!