升级到worklight 5.0.6后,发现dojox.mobile.View的performTransition方法在过渡完成时没有调用回调函数。
registry.byId("view1").performTransition("view2", 1, "slide", null, function(){console.log("hello")})
升级到worklight 5.0.6后,发现dojox.mobile.View的performTransition方法在过渡完成时没有调用回调函数。
registry.byId("view1").performTransition("view2", 1, "slide", null, function(){console.log("hello")})
我已经在 Mac OSX 10.8.3 上使用 Worklight Studio 5.0.6.20130311-0918 对此进行了测试,并使用 Xcode 4.6.2 在 iPhone 5 iOS 6.1.3 上进行了部署,并且效果很好。我不认为这在其他操作系统或设备上可能会有所不同。
这是我尝试过的代码,从一个全新的 Dojo 混合 WL 项目开始,旨在模仿您的描述:
1/ 在 test/common/test.html 中,将其用作 HTML 内容:
<div data-dojo-type="dojox.mobile.ScrollableView" id="view0"
data-dojo-props="selected:true">
<li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="label:'item 1'"></li>
<li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="label:'item 2'"></li>
</div>
<div data-dojo-type="dojox.mobile.ScrollableView" id="view1">
<li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="label:'item 3'"></li>
<li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="label:'item 4'"></li>
</div>
2/ 在 test/common/js/test.js 中,使用这个版本的 dojoInit():
function dojoInit() {
require([ "dijit/registry", "dojo/ready", "dojo/parser", "dojox/mobile",
"dojox/mobile/compat", "dojox/mobile/deviceTheme",
"dojox/mobile/ScrollableView" ],
function(registry, ready) {
ready(function() {
var v0 = registry.byId("view0");
v0.performTransition("view1", 1, "slide", null,
function(){
alert("transition done");
console.log("transition done");
});
});
});
}
这对我来说很好,包括控制台中的警告框和日志消息。
您说 Dojo 版本是 1.8.1,但这不是我在全新安装的 WL 5.0.6 中看到的 Dojo 版本。你能检查/dojo/version.txt的内容吗?在我这边,它包含“1.8.3-20130207-IBM”。你有同样的吗?如果您不这样做,并且如果您使用 Eclipse 更新升级了较旧的 WL 版本,我建议您从头开始安装 WL 5.0.6。
另外,您在升级到 Worklight 5.0.6 之前使用的版本是什么?您是否在迁移时修改了代码,或者 WL 版本的更改是您对应用程序所做的唯一更改?
希望这会有所帮助,阿德里安