2009-06-30 3 views
0

У меня есть страница, которая делает ASP.NET ajax postbacks с помощью UpdatePanels. В некоторых javascript я создал некоторые объекты в событии window.onload, который отлично работает. Однако, когда я делаю обратную передачу, кажется, что мои объекты перепутаны.Является ли ajax нарушением моих объектов javascript?

Один объект, который получал события из таблицы, больше не принимает события. У меня также был случай, когда объекты, которые имеют локальные ссылки на кнопки, не смогут их обновить. Вот кнопка Javascript, что получал перепутались:

function EditItemPage(clientId) 
{ 
    this.saveButton = $get(clientId + ""_{2}"") 
    this.publishButton = $get(clientId + ""_{3}"") 
    this.exitButton = $get(clientId + ""_{4}"") 

    EditItemPage.prototype.GoDirty = function() 
    { 
     //it works if i add these, but i'd rather not have to. 
     this.saveButton = $get(clientId + ""_{2}"") 
     this.publishButton = $get(clientId + ""_{3}"") 
     this.exitButton = $get(clientId + ""_{4}"") 

     this.saveButton.disabled = false; 
     this.publishButton.value = 'Save and Publish'; 
     this.exitButton.value = 'Discard changes and Exit'; 
    } 
} 

Так после того, как я постбэк, ссылки кнопки перепутались, если я не сбросить их, как я сделал в функции GoDirty().

Любое понимание?

ответ

2

Ключ this изменяется (зависит от того, какая функция его вызывает). В принципе, это проблема сферы. Вам нужно либо сделать закрытие вокруг функции, которая вызывается на ответ ajax, ИЛИ положить то, что вам нужно, в глобальную область, ИЛИ делать то, что вы делаете (что вам не нравится).

Написание закрытия является «правильным» способом.

Возможно, вы знакомы с тем, как изменяет область изменения на основе событий для входных данных формы. Для текстового поля, если вы используете событие onblur, this ссылается на текстовое поле, которое просто потеряло фокус.

See this question for an example of how to do the closure.

This is also another good resource.

(я уверен, что я мог бы скопировать и вставить примеры здесь для вас, но это кажется излишним)

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