2016-01-05 3 views
0

У меня есть функция в моем кукольном LayoutView, которая имеет следующий интерфейс и событие блоков:Магистральных, марионетки - синхронное исполнение

ui: { 
     runAction: ".picasso-form-action-run" 
}, 

events: { 
     "click @ui.runAction": "runFilter" 
}, 

Функция runFilter выглядит следующим образом:

runFilter: function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     var _this = this; 

     _this.ui.runAction.addClass('processing'); 
     _this.ui.runAction.text('Processing'); 
     _this.ui.runAction.attr('disabled', 'disabled'); 

     setTimeout(function() { 
      _this.trigger("whiteboard:data:refresh"); // this fetch data 
     }, 5); 
    } 

Моим вопрос заключается в , Мне нужно изменить текст кнопки runAction до того, как я извлечу новые данные, но единственный способ заставить это работать - добавить тайм-аут к триггеру. Это похоже на хак и хотелось бы знать, как правильно это сделать.

Объект, который слушает триггер, загружает новые данные из БД и отображает область.

Любая помощь пожалуйста.

+0

Ну, в приведенном выше коде текст кнопок должен быть изменен, прежде чем запускать событие для извлечения данных ... Какая потребность в тайм-ауте здесь ..? –

+0

Это моя проблема, текст кнопки не меняется. только однажды я добавил, что время ожидания изменилось. – sophia

+0

Можете ли вы создать [mcve] ..? –

ответ

0

Я вижу, что вы используете

e.preventDefault(); 
e.stopPropagation(); 

Это, вероятно, потому, что вы подаете кнопку, которая будет представлять и перезагрузить страницу. Попробуйте определить кнопку с типом «кнопки», как это =:

<button id="myButton" type="button" /> 

Это мешает вам поймать событие, которое освежает страницу, и мы надеемся оказать то, что вы хотели.

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