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