2012-02-24 2 views
0

Я создал Extjs.Panel, и теперь я хотел бы динамически загружать содержимое на него. Так что я написал этот простой кодExtjs - содержимое загружаемого содержимого на панель

Ext.get('contentPanel').load({ 
        url: '@Url.Action("TempView","Home")' 

        }); 

После выполнения этой функции, панель заполняется TempView, однако несколько секунд спустя я получаю ошибку в библиотеке ExtJS

Microsoft JScript runtime error:Unable to get value of the property 'events': object is null or undefined.

EDIT Я flollowed @DmitryB совет и я использовал отладочную версию библиотеки. Вот что я узнал. Оказалось, что проблема заключается в функции

getElementEventCache 

, которая определена в файле Ext-все-debug.js в строке 11108. Функция выглядит таким образом

getElementEventCache : function(element) { 
     if (!element) { 
      return {}; 
     } 
     var elementCache = Ext.cache[this.getId(element)]; 
     return elementCache.events || (elementCache.events = {}); 
    }, 

Исключение брошено в последней строки, из-за того, что elementCache имеет значение NULL.

enter image description here Вот StackTrace от VisualStudio

enter image description here

+0

Запустите это в Chrome, чтобы увидеть полную трассировку стека. Также переключитесь на отладочную версию extjs, чтобы лучше понять ошибку. Это может быть или не быть связано с вашим событием загрузки. – dbrin

+0

@DmitryB Я отредактировал мой вопрос и добавил дополнительную информацию – John

+0

К сожалению, я этого раньше не видел. Что такое «элемент» в этой функции, который генерирует исключение? Также вы упомянули: «Исключение выбрано в фамилии». Что вы имели в виду? Каково содержимое события загрузки, вы пробовали скрипты: true? – dbrin

ответ

1

У меня была очень похожая ошибка, которая была решена путем добавления следующей строки. (от this forum thread)

if(Ext.isIE) { 
    Ext.enableGarbageCollector=false; 
} 
+0

Если вы только получаете эту ошибку в IE, это похоже на ту же ошибку, с которой я столкнулся. Трассировка стека возвращается к сборке мусора. – Robert

0

Я использую сильфона код и работать круто. Это может вам помочь.

Попробуйте

var content_div = Ext.get(div_id); 
    content_div.load({ 
    url:your_url,params:{id:'abc'},scripts:true,text: 'Loading...'}); 
    content_div.show(); 
+0

К сожалению, это не работает – John

+0

contentPanel - любой идентификатор тега html или идентификатор компонента Extjs. Если это компонент Extjs, обратитесь к Ext.getCmp ('contentPanel'); – siva565

Смежные вопросы