我有一个模型,它表示在服务器上运行的作业列表。
我想轮询服务器以查看计时器上的更新,以显示对作业状态的更改。
我该怎么做?
我的控制室看起来像这样
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?
}
});发布于 2014-03-13 00:40:36
第一项意见是:
如果您要获得一组作业,您可能需要使用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
https://stackoverflow.com/questions/22350543
复制相似问题