【问题标题】:Is Worklight App based on Dojo toolkit 1.9 supported in Windows phone 8?Windows phone 8 是否支持基于 Dojo 工具包 1.9 的 Worklight App?
【发布时间】:2013-12-17 20:09:54
【问题描述】:

我正在使用默认的 1.9 Dojo Toolkit 开发一个工作灯应用程序。我的应用程序在 Android 模拟器和网络浏览器模拟器中运行良好。我尝试在 Windows phone 8 Emulator 中测试相同的应用程序,但我无法看到整个主页。我只能看到按钮上使用的 Tabbar Button 部分,而我看不到页面中使用的列表项。我的问题是 Dojo Toolkit 1.9 是否支持 Windows Phone 8?

我访问了 dojo 1.9 发布链接,它说在 dojo 1.9 中,已包含对 Windows Phone 8 的支持。如果这是真的,我的应用在 Windows phone 8 模拟器中失败的原因可能是什么?

当我在 Worklight 项目中创建 Windows phone 8 环境时,我也得到了以下日志。

     [2013-11-12 22:14:08]             Environment 'Windows Phone 8' was created.
     [2013-11-12 22:14:13]             Starting build process: application 'KaiserTestApp', environment 'windowsphone8'
     [2013-11-12 22:14:28]             Windows Phone 8 app may not work well with Dojo toolkit included for this Application.  Use a different Worklight Project, without Dojo toolkit, for Windows Phone 8 apps.
     [2013-11-12 22:14:28]             Application 'KaiserTestApp' with environment 'windowsphone8' build finished.

【问题讨论】:

  • 您的 Worklight 版本是多少?
  • 这是 worklight 最新版本 6。
  • Visual Studio 中的输出视图中是否存在与 Dojo 相关的错误?
  • Worklight 6 和 Dojo 1.9 支持 Windows Phone 8; Windows Phone 8 主题是实验性的。
  • 输出视图中没有错误,但我已将设备主题强制设置为 Iphone,因为我想要 Iphone 的外观和感觉。我想这可能是一个原因。我将删除此条件并通知您。

标签: windows-phone-8 dojo ibm-mobilefirst windows-phone-8-emulator dojo-1.9


【解决方案1】:

有一个 WP8 VM 错误可能会伤害 ListItem 并可能解释您的问题。要检查您是否陷入这种情况,只需以这种方式修补 _ItemBase _setSelectedAttr 方法,看看是否能解决您的问题:

    _setSelectedAttr: function(/*Boolean*/selected){
        // summary:
        //      Makes this widget in the selected or unselected state.
        // description:
        //      Subclass should override.
        // tags:
        //      private
        if(selected){
            var p = this.getParent();
            if(p && p.selectOne){
                // deselect the currently selected item
                var arr = array.filter(p.getChildren(), function(w){
                    return w.selected;
                });
                array.forEach(arr, function(c){
                    this._prevSel = c;
                    c.set("selected", false);
                }, this);
            }
        }
        this.selected = selected;
        //this._set("selected", selected);
    }

如果这能解决您的问题,请告诉我们,我们将了解如何发布一个更新版本的 Dojo,以解决 WP8 WM 错误。

【讨论】:

  • 感谢克里斯的回复...看来问题仅出在列表项上。我会测试猴子补丁并告诉您。
  • @Chris-我指的是这个链接的第一个答案“stackoverflow.com/questions/17543998/…”。我可以将“CSS3”替换为 _"ItemBase _setSelectedAttr" 并将原型函数替换为您在答案中包含的方法,以使猴子补丁正常工作吗?
  • 嗨 Christophe,我无法弄清楚如何在我的案例中使用 Monkey 补丁,因此我替换了保存在 dojo/mobile 文件夹中的原始 _itemBase.js 文件中的 _setSelectedAttr 方法。但即使在尝试了这个之后,链接到标签栏按钮的 html 页面也没有显示。还有其他建议吗??
  • 好的。因此,要么您没有遇到我怀疑的问题,要么您的设备正在使用内置版本的 dojo 并且没有查询修补文件? (您可以通过将某种 console.log 放入修补文件中来检查它是否实际加载)。
  • 我在 setSelectedAttr 函数中添加了 console.log 语句,但它没有显示在控制台中。所以,这意味着它正在使用内置版本的 dojo。那我该怎么办??我的项目中有一个 www 文件夹,其中包含 devicetheme.js、core_web_layer.js、mobile_ui_layer.js 和 dojo.js 文件,但我在任何文件中都没有找到此功能。
猜你喜欢
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多