对于我本地的 angularJS 开发,我使用的是 nodeJS。如果我在 tomcat 服务器上部署我的 angularJS 项目,它基本上可以工作,但是,我使用不同的页面和不同的控制器,每次单击另一个页面时,似乎整个应用程序都重新启动,因为rootscope 会丢失,它会启动仅应在应用程序启动时启动的程序部分。
谁能告诉我这里出了什么问题?为什么我的应用程序不能 100% 正确运行在 tomcat 上?
我正在使用 tomcat 7.0.34
我不熟悉 Tomcat,但我们在 Apache 上遇到过同样的问题。由于 Angular 需要对您的应用程序本身进行路由,因此您必须告诉您的 Web 服务器始终提供您的根 HTML 页面,例如index.html.
完成此操作后,您的应用程序应该可以正常工作。
我假设当您说different page您的字面意思是不同的 html 页面(url)时。这是预期的行为。AngularJS 是一个单页应用程序 (SPA) 框架。与任何其他 SPA 一样,当您执行完整页面加载\重新加载或导航到另一个页面时,它会重新初始化。
这是由于 HTTP 的无状态特性。每个页面都是一个独立的请求,它启动了客户端页面的生命周期。
要正确使用 AngularJS 作为 SPA,您需要有一个主页。此页面的内容由子视图\部分(再次页面)更改\附加。AngularJS 还劫持浏览器 url chnanges,因此这不会导致整个页面在 url 更改时重新加载。
查看一些使用 AngularJS 创建的示例应用程序以了解其工作原理。