Extjs и SetTimeout
Ext.get('id1').on('click', function() {var a=Ext.Msg.alert("1","2"); setTimeout('a.hide()',1000); return a;}); вот есть такой кусочек кода, по логике, он должен привязывать к кнопке с id 'id1' событие click при котором показывается окошко, и которое должно исчезнуть через 1сек. Но, получаю ошибку в вот этой строчке: setTimeout('a.hide()',1000); - a is not defined. Как побороть эту ошибку? |
setTimeout(function () { a.hide(); }, 1000); |
Цитата:
|
eval строки 'a.hide()' выполнится в глобальном контексте, а там объекта "a" нет.
(function () { var obj = { test: function () { alert(1); } }; eval("obj.test()"); }()); function func(str) { eval(str); } (function () { var obj = { test: function () { alert(1); } }; func("obj.test()"); // func вместо setTimeout }()); |
Octane, Вы правы - спасибо большое.
P.S. аналог для SetTimeout в extjs: метод defer(). Перепишем пример, на чистом extjs: Ext.get('id1').on('click', function() {var a=Ext.Msg.alert("1","2"); (function(){a.hide();}).defer(1000); |
Часовой пояс GMT +3, время: 23:44. |