2015-06-04 6 views
1

Я хочу создать «расширение» для взаимодействия Jacada (для расширения функциональности), в моем случае для синтаксического разбора и назначения числовой части serialNumber (буквы, за которой следует цифра) до числового глобального («system»), например serialNumeric. Мне не хватает структуры и синтаксиса для выполнения этой работы, включая способ ссылки на переменные взаимодействия внутри расширения.написать расширение взаимодействия Jacada

Вот моя неудачная попытка, когда строки прокомментированы, чтобы сделать ее безобидной после неудачи; Я думаю, что я удалил «страницу возврата»; после аварии, после чего он по-прежнему разбился:

initExtensions("serialNumeric", function(app){ 
    app.registerExtension("loaded", function(ctx, page) { 
     // Place your extension code here 
     //$('[data-refname="snum"]').val('serialNumber');   
     // snum = Number(substring(serialNumber,1)) 
    }); 
}); 

Вот пример одного, который работает:

/** 
* Description: Add swiping gestures to navigate the next/previous pages 
*/ 
initExtensions("swipe", function(app) { 
    // Swipe gestures (mobile only) 
    app.registerExtension('pageRenderer', function(ctx, page) { 
     page.swipe(function(evt) {    
      (evt.swipestart.coords[0] - evt.swipestop.coords[0] > 0) 
       ? app.nextButton.trigger('click') 
       : app.backButton.trigger('click') 
     }); 
     return page; 
    }); 
}); 

После прочтения комментария ниже, я попытался следующие, но безуспешно (измененная переменная вопрос не является записанный обратно к этой переменной). Она вынесла плохо в комментариях, так что я ставлю его здесь:

Я хотел бы понять, когда этот код будет работать: это кажется логичным, что она будет работать, когда переменная присваивается. Спасибо за любую проницательность ~

ответ

1

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

Аргумент page содержит DOM страницы, которую вы только что загрузили, аргумент ctx содержит данные страницы в форме JSON. Вы можете проверить содержимое обоих аргументов в инструментах проверки браузера. Мне нравится Chrome. Нажмите F12 на Windows, или Сдвиг + Ctrl +Я на Mac.

Селектор $('[data-refname="snum"] input') предоставит вам поле ввода с вопросом с именем snum, которое вы определили в дизайнере. Затем вы можете поместить значение в поле ввода со значением из переменной serialNumber.

$('[data-refname="snum"] input').val(serialNumber); 

Вы также можете прочитать значения таким же образом.

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

+0

Я создал тестовое взаимодействие с одним вопросом элемента приводит к элементу заявления, которое отображает переменный вопрос. То, что я написал ниже, не позволяет выполнить задание переменной вопроса. Можете ли вы указать, что я сделал неправильно? Большое спасибо. Вот что не работает: initExtensions ("serialNumeric", function (app) { приложение.registerExtension ("загружен", функция (ctx, page) { var sernum = new String ($ ('[data-refname = "enter"] input')); var snumeric = new String (sernum.substr (1)); $ ('[data-refname = "enter"] input'). Val (snumeric); }); }); – pianospree

0

Вот простой пример того, как программно ввести свое значение в поле ввода и заставить его прочитать его в модели, чтобы затем он был отправлен на сервер. Вы можете попробовать более сложные селектора для размещения своей собственной формы.

initExtensions("sample", function(app){ 
 
    
 
    app.registerExtension("loaded", function(ctx, page) {   
 
     // simple selector 
 
     var i = $('input');   
 
     // set new value 
 
     i.val('some new value'); 
 
     // cause trigger so we can read into our model 
 
     i.trigger('change'); 
 
    });  
 
    
 
});