Меню JuiceUI ломается при обратной передаче ASP.NET с панелью разбиения на страницы

У меня есть веб-сайт ASP.NET 4.0 с настроенными меню JuiceUI. Когда страницы открываются по умолчанию, все выглядит нормально. На моих страницах, где есть табличное отображение (с использованием GridView в коде) и разбиение на страницы внизу, вызовы для выполнения PostBack, например

__doPostBack('ctl00$MainContent$GridView21','Page$3')

привести к поломке меню JuiceUI.

Код ошибки в консоли веб-разработчика говорит

Uncaught TypeError: невозможно прочитать свойство eval из null

с полным следом:

Uncaught TypeError: Cannot read property 'eval' of null juice.js:97
(anonymous function) juice.js:97
jQuery.extend.each jquery-1.8.2.js:605
(anonymous function) juice.js:96
jQuery.extend.each jquery-1.8.2.js:611
ready juice.js:55
fire jquery-1.8.2.js:974
self.fireWith jquery-1.8.2.js:1082
jQuery.extend.ready jquery-1.8.2.js:406
DOMContentLoaded

Кажется, это связано с тем, что при первой загрузке страницы отображается следующее выражение наблюдения:

widget.options: Object 
proto: Object 

После нажатия на номер страницы значения меняются на:

widget.options: Object 
icons: Object 
menu: null 
position: Object 
proto: Object 

Что приводит к тому, что меню становится нулевым в параметрах виджета при doPostback, и могу ли я что-нибудь сделать, чтобы это исправить?

Может кто-нибудь пролить свет на то, что происходит и что можно сделать, чтобы исправить это??

Спасибо


person Dan McKinnon    schedule 26.02.2013    source источник


Ответы (1)


В коде была ошибка.

Пришлось изменить файл сока.js с:

        $.each( widget.options, function( prop ) {
            if( this.eval ){
                var on = this.on;

to:

        $.each( widget.options, function( prop ) {
            if( this && this.eval ){
                var on = this.on;

К вашему сведению, это отлично работало в IE даже без изменений, но не работало в Chrome и Firefox. Включение проверки «это» исправило это. Надеюсь, разработчики сока увидят этот пост и внесут изменения или ответят на него.

person Dan McKinnon    schedule 27.02.2013