Nei*_*off 14 javascript microsoft-metro windows-8 winjs angularjs
应用程序运行但无法识别Angular数据对象.
这是我得到的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).
Run Code Online (Sandbox Code Playgroud)
这是angular.js中1059行的函数:
return ensure(modules, name, function() {
if (!requires) {
throw Error('No module: ' + name);
}
Run Code Online (Sandbox Code Playgroud)
这是围绕4473行的功能:
if (parent) {
parent.replaceChild(newNode, oldNode);
}
Run Code Online (Sandbox Code Playgroud)
我能够解决我遇到的第一个错误:
Unhandled exception at line 2031
JavaScript runtime error: Unable to add dynamic content
Run Code Online (Sandbox Code Playgroud)
通过包装所有angular.js MSApp.execUnsafeLocalFunction
MSApp.execUnsafeLocalFunction(function () {
....
});
Run Code Online (Sandbox Code Playgroud)
这些错误来自我在Angular.js主页上的待办事项列表示例后创建的测试应用程序.
怎么办?根据我参加的免费微软活动,"很容易将任何第三方JavaScript框架/库添加到Windows 8应用程序中!" 我可能是新手......但我不认为这很容易!
是否可以将Angular.js与Windows 8应用程序一起使用?
jon*_*onr 23
原因是因为Angular <!-- -->为ng-repeat和类似的指令添加了html注释标记.不幸的是,当使用.innertHTML从Javascript中输入时,Microsoft认为这些是不安全的,并且是不允许的.这可以在这里找到:
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> </div>' + element; // IE insanity to make NoScope elements work!
div.removeChild(div.firstChild); // remove the superfluous div
Run Code Online (Sandbox Code Playgroud)
会发生什么是元素
<!-- ngRepeat: item in arrayTest -->
Run Code Online (Sandbox Code Playgroud)
然后当angular执行div.innerHTML = ...时,元素将被删除.如果你在div.removeChild上放置一个断点,你会注意到div.innerHTML没有元素.
[编辑]写完这个回复后,我尝试添加
MSApp.execUnsafeLocalFunction(function () { div.innerHTML = '<div> </div>' + element });
Run Code Online (Sandbox Code Playgroud)
有用!显然你必须在MSApp.execUnsafeLocalFunction中包装所有angularjs,然后专门包含该行.
| 归档时间: |
|
| 查看次数: |
8462 次 |
| 最近记录: |