gpt4 book ai didi

angularjs - AngularJS + RequireJS + domReady 未捕获的对象

转载 作者:行者123 更新时间:2023-12-03 22:25:44 25 4
gpt4 key购买 nike

我有一个工作的 AngularJS 应用程序,并开始使用 RequireJS 来处理模块依赖关系。遵循本指南 - http://www.startersquad.com/blog/angularjs-requirejs/ - 带有 domReady 插件,用于手动引导 Angular 应用程序。

在 Chrome 中测试并在控制台中获得 Uncaught object。没有 Angular 通常提供的常见细节,只有无用的调用堆栈。

这是我的应用程序的一个非常简化的版本:

<html ng-app="myApp">
<body>
<script data-main="/scripts/config.js" src="scripts/require.js"></script>
</body>
</html>

config.js:

requirejs.config({
shim: { 'angular': { exports: 'angular' } },
deps: ['starting']
});
define(['require', 'angular', 'app'], function (require, angular) {
require(['domReady!'], function (document) {
angular.bootstrap(document, ['myApp']);
});
});

app.js:

define(['angular'], function (angular) {
var app = angular.module("myApp", []);
return app;
});

最佳答案

实际上,在简化版本中,错误更容易发现。问题在于模块的双重使用。第一次使用 HTML(RequireJS 之前的剩余时间):

<html ng-app="myApp">

RequireJS 完成加载文档后的第二次手动引导:

angular.bootstrap(document, ['myApp']);

所以这是 正确的 HTML 版本:

<html> <!-- Notice: removed ng-app -->
<body>
<script data-main="/scripts/config.js" src="scripts/require.js"></script>
</body>
</html>

另外,要查看真正的 AngularJS 错误而不是 Uncaught object(由对异常进行特殊处理的 RequireJS 打印),您可以捕获并显示它们如下:

require(['domReady!'], function (document) {
try {
// Wrap this call to try/catch
angular.bootstrap(document, ['materialApp']);
}
catch (e) {
console.error(e.stack || e.message || e);
}
});

关于angularjs - AngularJS + RequireJS + domReady 未捕获的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23927926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com