CanJS как обновить модель
У меня есть модель, которая представляет список заданий, которые выполняются на сервере
Я хочу опросить сервер на наличие обновлений по таймеру, чтобы показать изменения в состоянии заданий.
Как мне это сделать?
Мой контроль выглядит так
var control = Control({
defaults: {
view: 'app/views/job-index.ejs'
}
}, {
init: function () {
this.element
.empty()
.append(can.view(this.options.view, this.options));
var options = this.options;
window.setInterval(function() {
options.result.refresh();
}, 1000);
},
});
моя модель, до сих пор выглядит так
var model = can.Model({
findOne: 'GET /api/jobs'
}, {
refresh: function() {
// what goes here?
}
});
1 ответ
Решение
Сначала одно наблюдение:
Если вы получаете набор рабочих мест, вы, вероятно, хотите использовать findAll
вместо findOne:
findAll: 'GET /api/jobs',
findOne: 'GET /api/jobs/{id}'
Я это понимаю result
это одна запись. Так что вы можете сделать что-то вроде:
var Model = can.Model({
findAll: 'GET /api/jobs',
findOne: 'GET /api/jobs/{id}'
}, {
refresh: function () {
var id = this.attr('id');
var self = this;
Model.findOne({id: id}, function (model) {
self.attr(model.attr());
});
}
});
Кроме того, по соглашению вы должны назвать свой класс модели Model
не model
,
Вот скрипка http://jsbin.com/xarodoqo/4/edit