OnsenUI与AngularJS Bootstrapping与Cordova

时间:2015-05-07 20:17:56

标签: angularjs cordova onsen-ui monaca

我正在使用AngularJS和OnsenUI处理Cordova应用程序。我遇到了与ons.bootstrap()调用相关的文档时出现问题。

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

我注意到在Onsen中,必须调用ons.bootstrap,有或没有其他参数,例如ons.bootstrap(' myApp',[...依赖... ])。我已经摆弄了这个,似乎我能注入Onsen的唯一方法是使用它的自举调用。但是,在我的应用程序文件的其他地方,我仍然使用角度定义(例如,angular.module(' myApp',[...依赖...])。 (...)。run(...))等等。

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

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

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

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

简而言之,Onsen UI独立于Monaca,唯一的区别将包括Monaca的loader.js index.html(包括OnsenUI,AngularJS,Cordova等),或包括所有库分别。 另外,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/

希望它有所帮助。

答案 1 :(得分:0)

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

基本上,在Cordova deviceready事件中,我打电话给:

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

是的,那里有很多例子,但是那些包含Cordova并对如何使用实际代码进行合理组织传真的例子,是因为不同的对象是在不同的文件中定义的,在多个文件夹中,是相当的不足。虽然谷歌承认不一定很好。

感谢您的回复。