我想创建一个"扩展程序"对于Jacada Interaction(扩展功能),在我的情况下解析并将serialNumber(一个字母,后跟数字)的数字部分分配给一个数字全局(" system")变量,比如serialNumeric。我缺乏的是使这项工作的结构和语法,包括从扩展中引用交互变量的方式。
这是我失败的尝试,线条被注释掉,以便在失败后使其无害;我想我删除了#34;返回页面;"在崩溃之后,它仍然崩溃了:
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;
});
});
在阅读下面的评论后,我尝试了以下操作,但未成功(修改后的问题变量未写回该变量)。它在评论部分表现不佳,所以我把它放在这里:
initExtensions("serialNumeric", function(app){
app.registerExtension("loaded", function(ctx, page) {
var sernum = new String($('[data-refname="enter"] input'));
var snumeric = new String(sernum.substr(1));
$('[data-refname="enter"] input').val(snumeric);
});
});
我想了解这段代码何时运行:在分配变量时运行它似乎是合乎逻辑的。感谢您的任何见解〜
答案 0 :(得分:1)
在您的情况下,您会延长loaded
事件。您不必像在下面的工作示例中那样从扩展程序返回页面。
page
参数包含刚刚加载的页面的DOM,ctx
参数包含JSON格式的页面数据。您可以在浏览器的检查工具中检查这两个参数的内容。我喜欢Chrome。在Windows上按 F12 或在Mac上按 Shift + Ctrl + I 。
选择器$('[data-refname="snum"] input')
将为您提供您在设计器中定义的名称为snum
的问题的输入字段。然后,您可以使用serialNumber
变量中的值将值放在输入字段中。
$('[data-refname="snum"] input').val(serialNumber);
您也可以用同样的方式阅读值。
您不能(此时)访问扩展程序中的交互变量,除非您将这些变量放在问题字段中。
答案 1 :(得分: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');
});
});