-3

我正在使用 AngularJS 和 OnsenUI 开发 Cordova 应用程序。关于调用 ons.bootstrap() 的文档有问题。

具体来说,我习惯于在需要时在 Cordova 中手动引导 AngularJS 应用程序——即,当 DOM 加载时,如果我在浏览器中,或者当 deviceready 事件触发时,如果我在设备上,调用到 angular.bootstrap(document, ['myApp'])。

我注意到在 Onsen 中,有必要调用 ons.bootstrap,有或没有其他参数,例如 ons.bootstrap('myApp', [...dependencies...])。我一直在摆弄这个,似乎我可以注入 Onsen 的唯一方法是如果我使用它的引导调用。但是,在我的应用程序文件的其他地方,我仍在使用角度定义(例如, angular.module('myApp', [...dependencies...]).config(...).run(... )) 等等。

我发现了一些有问题的实现,并且无法在网上找到明确的答案:

1)如果我在初始化中调用 angular.bootstrap,Onsen 永远不会加载

2)如果我使用 ons.bootstrap 调用,事情似乎可以工作,但我最终会在 bootstrap 调用中重复我的依赖关系以及我使用 angular 的应用程序定义。这种冗余对我来说似乎很糟糕。

3) 如果我同时使用这两个调用(并非意外),我会收到 isWebView() 已定义错误,并且应用程序无处可去。

不幸的是,Onsen 网站上的所有示例都假定所有代码(HTML、JS 等)都喜欢驻留在一个位置,并且似乎没有考虑 Cordova。我过去使用过 Onsen,但在几个版本之前,旧的注射方法似乎不再有效。

所以我的问题是,你应该以什么方式引导和使用 Onsen、Angular 和 Cordova?或者,是否有一个涉及 Monaca 的好例子?

提前致谢。

4

2 回答 2

1

当然,在某处也有很好的例子。您是否尝试过使用基本的 Onsen UI 模板?它们在 Onsen UI 的“入门”指南中提供并回答您的所有问题: http: //onsen.io/download.html#download-templates

简而言之,Onsen UI 独立于 Monaca,唯一的区别是loader.js在你的index.html(包括 OnsenUI、AngularJS、Cordova 等)中包含 Monaca,或者分别包含所有库。另外,ons.bootstrap()是可选的,您可以angular.module('app', ['onsen'])根据需要使用。

也可以使用 Cordova,您只需像在任何其他 Cordova 应用程序中一样包含 Cordova 文件。您可以在模板中看到它。

所有这些都有很多示例,例如基本模板。更多示例:

Onsen UI 的 Github:https ://github.com/OnsenUI/OnsenUI/tree/master/demo

Onsen UI 的博客: http: //onsen.io/blog/developing-hybrid-mobile-apps-with-onsen-ui/

希望能帮助到你。

于 2015-05-08T02:45:24.323 回答
0

好吧,出于某种原因,我能让这个东西正确初始化的唯一方法是使用 Onsen 引导方法并让它加载所有依赖项。由于ons.bootstrap()返回 Angular 模块,我现在将使用它。

所以本质上,在 Cordovadeviceready事件中,我调用:

angular.module('myApp.controllers', []);
angular.module('myApp.services', []);
ons.bootstrap('myApp', [ ...dependencies... ]);

是的,那里有很多例子,但是那些结合 Cordova 并合理组织地模拟实际代码的使用方式的例子,因为不同的对象定义在不同的文件中,在多个文件夹中,是相当缺乏的。尽管 Google-Fu 承认并不一定很棒。

谢谢您的答复。

于 2015-05-08T13:10:36.867 回答