【问题标题】:IBM Mobile First Platform (6.3) - Windows Phone 8 environment and AngularjsIBM Mobile First Platform (6.3) - Windows Phone 8 环境和 Angularjs
【发布时间】:2015-03-10 07:27:30
【问题描述】:

我使用 angularjs (+ angular-ui-router) 创建演示应用程序来开发和构建到 android、ios、windows phone 8 环境。 Everythings 在 android、ios 和移动网络模拟器上运行良好,但在 windows phone 设备上它不显示我的自定义指令。我使用 Visual Studio Express 2012 for Windows Phone 构建。

在 index.html 中:

  <!DOCTYPE HTML>
    <html>
            <head>
                <meta charset="UTF-8">
                <title>test</title>
                <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
                <!--
                    <link rel="shortcut icon" href="images/favicon.png">
                    <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 
                -->
                <link rel="stylesheet" href="css/main.css">
                <script>window.$ = window.jQuery = WLJQ;</script>
            </head>
            <body style="display: none;" ng-controller="demoController">
                <!--application UI goes here-->
                <div ui-view></div>

                <script src="js/libs/angular.js"></script>
                <script src="js/libs/angular-ui-router.js"></script>

                <script src="js/app.js"></script>

                <script src="js/initOptions.js"></script>
                <script src="js/main.js"></script>
                <script src="js/messages.js"></script>
            </body>
    </html>

在 main.js 中:

 var PATH = "";
    function wlCommonInit(){
        if (WL.Client.getEnvironment() == WL.Environment.WINDOWS_PHONE_8) {
            PATH = "/www/default/";
        }
        // Common initialization code goes here
        angular.element(document).ready(function() {
            angular.bootstrap(document, ['app']);
        });
    }

在 app.js 中:

 (function() {
        angular.module('app', ['ui.router'])
        // config route
        .config(function($stateProvider) {
            $stateProvider
            .state('home', {
                url: '/home',
                templateUrl: PATH + 'js/templates/home.html'
            });
        })
        // custom directive
        .directive('mHeader', function() {
            return {
                templateUrl: PATH + 'js/templates/header.html'
            };
        })
        // demo controller
        .controller('demoController', function($state) {
            $state.go('home');
        });
    })();

在 home.html 中:

<div m-header></div>
<div>this is home page</div>

在 header.html 中:

<div>this is header</div>

在调试的 Visual Studio 输出视图中:

'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: DefaultDomain): Loaded 'C:\windows\system32\mscorlib.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Windows.RuntimeHost.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Windows.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Net.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Xml.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\Data\Programs\{42B9E91D-5EEE-40E2-8162-FDBCC185DADB}\Install\example.DLL'. Symbols loaded.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\Data\Programs\{42B9E91D-5EEE-40E2-8162-FDBCC185DADB}\Install\WLWPNativeLib.DLL'. Cannot find or open the PDB file.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\Data\Programs\{42B9E91D-5EEE-40E2-8162-FDBCC185DADB}\Install\worklight-windowsphone8.DLL'. Cannot find or open the PDB file.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\Microsoft.Phone.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\Microsoft.Phone.Interop.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Runtime.Serialization.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\WinMetadata\Windows.winmd'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Xml.Linq.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\Data\Programs\{42B9E91D-5EEE-40E2-8162-FDBCC185DADB}\Install\WPCordovaClassLib.DLL'. Cannot find or open the PDB file.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Core.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.ServiceModel.Web.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\en-US\mscorlib.debug.resources.dll'. Module was built without symbols.
The thread 0xc98 has exited with code 259 (0x103).
An exception of type 'System.NotSupportedException' occurred in Microsoft.Phone.ni.dll and wasn't handled before a managed/native boundary
The thread 0x840 has exited with code 259 (0x103).
The thread 0xa3c has exited with code 259 (0x103).
An exception of type 'System.SystemException' occurred in Microsoft.Phone.Interop.ni.dll and wasn't handled before a managed/native boundary
The thread 0xe34 has exited with code 259 (0x103).
An exception of type 'System.NotSupportedException' occurred in Microsoft.Phone.ni.dll and wasn't handled before a managed/native boundary
The thread 0x904 has exited with code 259 (0x103).
The thread 0xd78 has exited with code 259 (0x103).
The thread 0xd0c has exited with code 259 (0x103).
The thread 0xb08 has exited with code 259 (0x103).
The thread 0x8b0 has exited with code 259 (0x103).
The thread 0xe1c has exited with code 259 (0x103).
An exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary
The thread 0x44c has exited with code 259 (0x103).
The thread 0x460 has exited with code 259 (0x103).
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\Data\Programs\{42B9E91D-5EEE-40E2-8162-FDBCC185DADB}\Install\Newtonsoft.Json.DLL'. Cannot find or open the PDB file.
The thread 0x4b4 has exited with code 259 (0x103).
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Runtime.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Dynamic.Runtime.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Linq.Expressions.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.ObjectModel.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.IO.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Collections.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Globalization.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'TaskHost.exe' (CLR C:\windows\system32\coreclr.dll: Silverlight AppDomain): Loaded 'C:\windows\system32\System.Runtime.Extensions.ni.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread 0x364 has exited with code 259 (0x103).

【问题讨论】:

  • 您在 Visual Studio 输出视图中看到了什么错误?
  • 对不起,我已经编辑了我的问题。
  • 不幸的是,日志似乎没有提供任何相关信息。您能否提供一个演示 MFP 项目来重现该问题以便对其进行调试?
  • 是的,我已经将项目上传到github,github.com/hoangnm/exampleMBF
  • 可能和这个问题有关? issues.apache.org/jira/browse/CB-7843

标签: javascript angularjs windows-phone-8 ibm-mobilefirst


【解决方案1】:

Windows Phone 上的 IE 不允许资源注入。在 MSApp.execUnsafeLocalFunction() 中添加所有分配;解决了大部分 jQuery 和 Angular JS 问题。如下图。。

MSApp.execUnsafeLocalFunction(function () {
    element.innerHTML = value;
});

【讨论】:

  • 我认为在这种情况下这不是我的问题,当使用 windows phone 的 cordova 3.6.3 中的 angular ui 路由器更改为新状态时,它无法调用 $http。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2015-06-28
  • 1970-01-01
  • 2015-10-04
相关资源
最近更新 更多