2012-10-09 3 views
14

アプリケーションは実行されますが、角度データオブジェクトは認識されません。ここでAngular.jsをWindows 8ストアアプリで動作させるにはどうすればよいですか?

は、私が取得していますJavaScriptエラーです:ここで

Exception was thrown at line 1059, column 11 in ms-appx://28934b41-4dd2-4414-b9a9- 
a73c11c1b743/js/angular.js 
0x800a139e - JavaScript runtime error: No module: ngLocale 
Exception was thrown at line 4473, column 9 in ms-appx://28934b41-4dd2-4414-b9a9- 
a73c11c1b743/js/angular.js 
0x800a139e - JavaScript runtime error: HierarchyRequestError 
The program '[5112] WWAHost.exe' has exited with code 1 (0x1). 

はangular.jsでライン1059の周りの関数である。

return ensure(modules, name, function() { 
    if (!requires) { 
     throw Error('No module: ' + name); 
    } 

そしてここでは、ライン4473の周りの関数である。

if (parent) { 
    parent.replaceChild(newNode, oldNode); 
    } 

私が遭遇した最初のエラーを修正できました:

これらのエラーは、私がAngular.jsホームページからToDoリストの例次の作成したテストアプリからです MSApp.execUnsafeLocalFunction

MSApp.execUnsafeLocalFunction(function() { 
      .... 
     }); 

でangular.jsのすべてを包むことにより

Unhandled exception at line 2031 
JavaScript runtime error: Unable to add dynamic content 

今何ですか?私が出席した無料のMicrosoftイベントによれば、「サードパーティのJavaScriptフレームワーク/ライブラリをWindows 8アプリケーションに追加するのは簡単です!私はこれに新しいかもしれない...しかし、これは非常に簡単だとは思わない!

Angular.jsをWindows 8アプリで使用することはできますか?

答えて

23

なぜなら、Angularはhtmlコメント<!-- -->タグをng-repeatや同様のディレクティブ用に配置しているからです。残念ながら、マイクロソフトでは、JavaScriptが.innertHTMLを使用して配置され、許可されていない場合、これらは安全でないとみなしています。これは、ここで見つけることができます:

http://msdn.microsoft.com/en-us/library/windows/apps/hh465388.aspx

それはjQLiteにライン1534で行わ:

var div = document.createElement('div'); 
      // Read about the NoScope elements here: 
      // http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx 
      div.innerHTML = '<div>&#160;</div>' + element; // IE insanity to make NoScope elements work! 
      div.removeChild(div.firstChild); // remove the superfluous div 

何が起こることは要素が

<!-- ngRepeat: item in arrayTest --> 

その後div.innerHTMLは角んです= ...要素が削除されます。 div.removeChildにブレークポイントを設定すると、div.innerHTMLに要素がないことがわかります。

[EDIT] この応答を書いた後、私はそれが動作

MSApp.execUnsafeLocalFunction(function() { div.innerHTML = '<div>&#160;</div>' + element }); 

を追加してみました!どうやら、MSApp.execUnsafeLocalFunctionのすべてのangularjsをラップしてから、その行を具体的にラップする必要があります。私の場合は

+2

どのように角度のドキュメントではありません。 ng-repeatsを使用するすべての人にとって問題ではありませんか? – morgs32

+0

これは、HTML5でWindows 8アプリを作っている人にとって唯一の問題です。ほとんどの人がAn​​gular forを使っているわけではありません。 – wmil

+1

そして記録のために、shim(https://github.com/codemonkeychris/angular-winjs)を使用してWindowsとWindows Phoneアプリで角度再生をうまく行えるようになりました。 –

1

私はMSApp.execUnsafeLocalFunctionでangularjsを包み、私だけに使用されるデータ-ngのリピート代わりにNGリピートの

4

私はそれが私の店のアプリでHTMLタグにng-cspを追加することにより、作業ました。これにより、コンテンツセキュリティポリシーが有効になり、「評価」などの機能が無効になります。私はjQuery(v2.1.1)とAngular(v1.3.0-beta.13)を使用しました。

の詳細はAngularJS documentationです。