我的问题的简化版本位于github。
我正在使用mobiscroll 2.6.2(因为这是github上的最后一个免费版本。后来版本高达2.11但存在不同的许可证。)
基本上,我有一个索引页面,它只能包含指向jQM对话框页面的链接。 dialog.html是jQM对话框页面,它有一个输入,mobiscroll库变成一个弹出式滚动条,用于选择数字。
mobiscroll有效。选择输入时会出现弹出式滚动条。我可以从滚动条中选择一个数字,然后用我的选择填充输入。所以我很确定我的mobiscroll初始化很好。我将在此重复一遍以便于审核:
$('#mobiInput').mobiscroll()
.scroller({
theme: 'ios',
mode: 'scroller',
display: 'bubble',
wheels: [ // Wheel groups array
[ // First wheel group
{
label: 'Number',
values: ['9','8','7','6','5','4','3','2','1']
}
]
],
onSelect: function(valueText, inst) {
}
});
我正在尝试使用的功能是mobiscroll的setValue function
我将其设置为“2”的值。
var valueArray = ["2"];
$('#mobiInput').mobiscroll('setValue', valueArray, true);
这实际上有效...我第一次打开对话框页面。输入显示值2,当我弹出滚动条时,选择值2。
但是,当我关闭对话框(通过单击取消按钮,确定按钮或关闭图标)并重新打开对话框时,setValue函数似乎不起作用。值2不在输入中。当我弹出滚动条时,它默认为第一个值9。
我的猜测是,它不是mobiscroll中的错误,而是我对jQM ajax导航的误解。
答案 0 :(得分:1)
问题是 Mobiscroll 样式表,每次打开对话框时都会加载JS库。虽然从DOM中删除了外部对话框,但不会删除与 Mobiscroll 相关的库。
解决方案1:
在索引/首页的<head>
中加载与 Mobiscroll 相关的所有库以及初始化代码。
<!-- index/first page -->
<head>
<!-- Mobiscroll style sheet -->
<!-- MobiScroll JS library -->
<script>
$(document).on("pagecreate", "#dialogID", function () {
/* initialize Mobiscroll and setValue */
});
</script>
</head>
解决方案2:
在索引/首页的<head>
中加载与 Mobiscroll 相关的所有库。对于初始化代码,将其放在 dialog div中。但是,您需要取消绑定pagecreate
并再次绑定它。
<!-- index/first page -->
<head>
<!-- Mobiscroll style sheet -->
<!-- MobiScroll JS library -->
</head>
<!-- external dialog -->
<div data-role="page" id="dialogID" data-dialog="true">
<script>
$(document).off("pagecreate", "#dialogID").on("pagecreate", "#dialogID", function () {
/* initialize Mobiscroll and setValue */
});
</script>
</div>
<强> Demo 强>