我有一个模型,表示在服务器上运行的作业列表
我想轮询服务器以获取计时器上的更新,以显示作业状态的更改。
我该怎么做?
我的控件看起来像这样
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?
}
});
答案 0 :(得分:2)
首先观察一次:
如果您要获得一系列工作,您可能应该使用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
。