0

升级到worklight 5.0.6后,发现dojox.mobile.View的performTransition方法在过渡完成时没有调用回调函数。

  registry.byId("view1").performTransition("view2", 1, "slide", null, function(){console.log("hello")})
4

1 回答 1

1

我已经在 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 版本的更改是您对应用程序所做的唯一更改?

希望这会有所帮助,阿德里安

于 2013-05-03T13:32:09.307 回答