Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2009, 04:50
vkovalev
 
Сообщений: n/a

изменение текущего контекста функции
Добрый всем день, в mootools если надо изменить контекст, в котором работает функция, пишется примерно такое(за синтаксис не ручаюсь):
(function (){}).bind(нужный мне контекст)
В JQuery bind насколько я понял привязывает функции к событиям. А вот как бы изменить контекст, в котором работает функция?
Заранее спасибо за ответ
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2009, 07:40
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

http://javascript.ru/tutorial/object/thiskeyword
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2009, 12:44
vkovalev
 
Сообщений: n/a

спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 15.03.2009, 13:07
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

пожалуйста
Ответить с цитированием
  #5 (permalink)  
Старый 15.03.2009, 13:54
vkovalev
 
Сообщений: n/a

уточнение
вернее, ситуация такая:есть класс, который грузит шаблон

function Template(file_name) {
this.template_data = '';

this.load_template = function()
{

$.get(file_name, function(data){
// не работает
this.template_data = data;
});
}
}

так понимаю, что безымянная функция в get работает не в контексте Template. Передать ей this в параметре вроде как не могу. Как бы это уладить?
Ответить с цитированием
  #6 (permalink)  
Старый 15.03.2009, 14:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

попробуйте так
function Template(file_name) {
this.template_data = '';

this.load_template = function()
{
var set_template_data=function(data){this.template_data = data;}

$.get(file_name, function(data){
// не работает
set_template_data(data);
}); 
} 
}

PS исопльзуйте пожалуйста ББ-код для оформления исходных кодов
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2009, 14:53
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Я делаю так:

function Template(file_name) {
  this.template_data = '';
  var that = this;
  this.load_template = function() {
    $.get(file_name, function(data){
      // теперь работает:)
      that.template_data = data;
    }); 
  } 
}
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2009, 15:04
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

hogart,
еще более замечательное использование замыкание.
твой вариант мне больше нравится
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2009, 15:04
vkovalev
 
Сообщений: n/a

Re
Еще раз спасибо, таки помогло )
Ответить с цитированием
  #10 (permalink)  
Старый 15.03.2009, 15:06
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

пожалуйста
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59
Вопрос по функции Flex Общие вопросы Javascript 3 05.12.2008 04:03
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17