我很难尝试找出为什么我的分配丢失了,并且发现回调作用域与我想象的不同。
我要做的是在控制器中创建一个变量,然后尝试将回调传递给该控制器创建的窗口,然后在该窗口上的事件上回调该控制器中的函数。
例如,在我的控制器中,我有:
callWindow: function(){
var myWin = Ext.Create('MyApp.view.myWin', {doSomething: this.doSomething});
},
doSomething: function(data){
this.myData = data;
},
useTheData: function(){
console.log(this.myData);
}
Run Code Online (Sandbox Code Playgroud)
在myWin的控制器中,我有一个偶数处理程序以这种方式调用doSomething:
onBtnClick: function(button){
var win = button.up('window');
var data = {id: 1, name: "John"}; // please, don't pay attention to this, it's a record I'm passing to the caller.
win.doSomething(data);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在“ doSomething”函数中,我为控制器分配了var myData,其值由窗口的控制器传递。最初,我认为“ doSomething”的范围是调用方控制器,但它是窗口的控制器,这就是为什么useTheData给出错误说this.myData为null的原因。
我已经解决了问题,方法是传递一个名为“ caller:this”的新参数,并在doSomething中接收该参数,并使用它代替“ this”。
问题是,有没有一种简单的方法(步骤较少)?
我的JsonStore如此定义:
var data_json = new Ext.data.JsonStore({
url: '/Game/json_index',
autoLoad: true,
id: 'data_json',
idProperty: 'id',
fields: [ {name: 'id', type: 'int'}, 'name', {name:'add_date', type:'date', dateFormat: 'M$'}, 'price', 'kind', 'metacritic'],
listeners: { 'load': function(storename, records, options){
console.dir(this);
}},
writer: new Ext.data.JsonWriter()
})
Run Code Online (Sandbox Code Playgroud)
它收到的JSON的DUMP是这样的:
[
{"id":1,"name":"Guild Wars 2","add_date":"\/Date(1346104800000)\/","price":24.99,"kind":"MMO","metacritic":93},
{"id":2,"name":"Dark Souls: Prepare to Die Edition","add_date":"\/Date(1345759200000)\/","price":45.00,"kind":"actionrpg","metacritic":87},
{"id":3,"name":"Orcs Must Die! 2","add_date":"\/Date(1343599200000)\/","price":15.00,"kind":"action","metacritic":83}
]
Run Code Online (Sandbox Code Playgroud)
JSON被正确解码,商店里满是我的记录,但要注意......可怕的事情发生了!
所有记录都标记为phantom = true,这不能让我正确使用ExtJS 3.4.x store.save()功能
我在google上彻底搜索了这个问题,并且(我认为)它与JsonReader没有将记录id与我传递的'id'字段相关联的事实联系起来.我甚至指定了idProperty:'id'.
帮忙吗?我变得绝望,阅读关于创造记录的极端来源是纯粹的痛苦.
我有一个extjs应用程序,它将参数发送到带有斜杠的应用程序设置...例如"Tiger/Cheetah",打印报告...我的ssrs报告也将该参数设置得很好...但是当经历一个网页浏览器传递的参数不带斜线的"Tiger/Cheetah"......它需要"Tiger"但报告中没有记录...
我试着像这样替换/和%2f
Tiger%2fCheetah
Run Code Online (Sandbox Code Playgroud)
它不起作用......
还有其他方法吗?
我想使用ExtJs或本机javascript获取视口的高度.
我怎么能得到这个高度?我没有使用任何extjs视口容器.
如果不能使用ExtJs那么我怎样才能找到视口的确切高度?
谢谢!!
表格加载后哪个事件会触发?我的要求是在视图加载的时候基于某些控制设置为禁用模式(只读)所以如何处理这个(哪个事件)我试过这个formpanel.on({ actioncomplete: function (form, action) {}
但是没有被解雇
提前致谢
我有一个像这样组织的列表:
[('down', 0.0098000000000000309),
('up', 0.0015000000000000568),
('down', 0.008900000000000019),
('down', 0.023300000000000098),
('down', 0.011599999999999944),
('down', 0.0027000000000000357),
('up', 0.0023999999999999577),
('up', 0.0065000000000000613),
('down', 0.0057000000000000384),
('down', 0.018400000000000083),
('up', 0.009300000000000086),
('down', 0.0038000000000000256),
('down', 0.00050000000000005596),
('up', 0.0082000000000000961), .....
Run Code Online (Sandbox Code Playgroud)
什么是"向后比较"的最佳方式?,基本上我想要返回"是"(或者其他......)如果我们得到一系列的2"下降",接着是一个"向上",第二个值低于0.0095.
我希望他有道理..
我正在尝试编写一个通过此doctest的函数:
Prints a table of values for i to the power of 1,2,5 and 10 from 1 to 10
left aligned in columns of width 4, 5, 8 and 13
>>> print_function_table()
i i*2 i*5 i*10
1 1 1 1
2 4 32 1024
3 9 243 59049
4 16 1024 1048576
5 25 3125 9765625
6 36 7776 60466176
7 49 16807 282475249
8 64 32768 1073741824
9 81 59049 3486784401
10 100 100000 10000000000
Run Code Online (Sandbox Code Playgroud)
我觉得我几乎就在那里,但我似乎无法左对齐我的列.
我的代码是:
def print_function_table(): …
Run Code Online (Sandbox Code Playgroud)