gpt4 book ai didi

javascript - ExtJS 任务运行器

转载 作者:行者123 更新时间:2023-11-29 21:53:31 24 4
gpt4 key购买 nike

我仍处于 EXTJS 的学习过程中,非常感谢任何帮助。

我的目标是将数据加载到网格中,其中一个单元格的值需要每分钟递增一次。根据我的研究,使用 TaskRunner 函数是可行的方法,但无法弄清楚将它放在哪里以及如何使用它。我的假设是它需要进入模型或 Controller ,但我不确定。在我的简单项目中,我使用的是 MVC 架构。

目前我的 gird 按预期工作。它读入文件进行日期转换,生成分钟值。这是我需要增加的那个分钟值。

下面的代码是我正在使用的示例 TaskRunner 片段,我还不知道对错。

var runner = new Ext.util.TaskRunner();
var task = runner.newTask({
run: store.each(function (item)
{
var incReq = item.get('request') + 1;
item.set('request', incReq);
}),

interval: 60000 // 1-minute interval
});
task.start();

型号:

Ext.define("myApp.model.ActionItem", {
extend : "Ext.data.Model",
fields : [
{
name: 'pri',
type: 'int'
},
{
name: 'request',
type: 'int',
defaultValue: 0,
convert : function(v, model) {
return Math.round((new Date() - new Date(v)) / 60000);
}
}
]

});

Controller :

Ext.define("myApp.controller.HomeController", {
extend: "Ext.app.Controller",
id: "HomeController",
refs: [
{ ref: "ActionItemsGrid", selector: "[xtype=actionitemgrid]" },
{ ref: "DetailsPanel", selector: "[xtype=actionitemdetails]" }
],
pri: "",
models: ["ActionItem"],
stores: ["myActionStore"],
views:
[
"home.ActionItemDetailsPanel",
"home.ActionItemGrid",
"home.HomeScreen"
],
init: function () {
this.control({
"#homescreen": {
beforerender: this.loadActionItems
},
"ActionItemsGrid": {
itemclick: this.displayDetails
}
});
},
displayDetails: function (model, record) {
this.getDetailsPanel().loadRecord(record);
},
loadActionItems: function () {
var store = Ext.getStore("myActionStore");
store.load();
this.getActionItemsGrid().reconfigure(store);
}
});

查看:

Ext.define("myApp.view.home.ActionItemGrid", {
extend: "Ext.grid.Panel",
xtype: "actionitemgrid",
resizable: true,
multiSelect: false,
enableDragDrop : false,
store: null,

columns:
[
{ header: "Pri", dataIndex: "pri", sortable: false, autoSizeColumn: true},
{ header: "Req", dataIndex: "request", sortable: false, autoSizeColumn: true}
],

viewConfig:
{
listeners: {
refresh: function(dataview) {
Ext.each(dataview.panel.columns, function(column) {
if (column.autoSizeColumn === true)
column.autoSize();
})
}
}
}
});

示例 JSON 文件:

{
"actionitems" : [
{
"pri": 1,
"request": "2014-12-30T03:52:48.516Z"
},
{
"pri": 2,
"request": "2014-12-29T05:02:48.516Z"
}
]
}

最佳答案

您在创建任务的代码中有错误 - 您应该提供运行配置属性的功能,而不是调用结果。试试这个:

var runner = new Ext.util.TaskRunner();
var task = runner.newTask({
run: function() {
store.each(function (item)
{
var incReq = item.get('request') + 1;
item.set('request', incReq);
})
},

interval: 60000 // 1-minute interval
});
task.start();

您可以将该代码放在 loadActionItems 方法中。

关于javascript - ExtJS 任务运行器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com