我想创建一个AngularJS应用程序,该应用程序在.com之后只使用一个HTTP域而没有任何内容。例如,这是在浏览器中显示的唯一URL的应用程序:如何创建不使用路由的AngularJS SPA应用程序?
www.myapp.com
这是可能的,我需要做什么?所有我见过的应用至今使用这样的:
www.myapp.com/users
www.myapp.com/screen1
等
我想创建一个AngularJS应用程序,该应用程序在.com之后只使用一个HTTP域而没有任何内容。例如,这是在浏览器中显示的唯一URL的应用程序:如何创建不使用路由的AngularJS SPA应用程序?
www.myapp.com
这是可能的,我需要做什么?所有我见过的应用至今使用这样的:
www.myapp.com/users
www.myapp.com/screen1
等
当然;您所需要的只是某种顶级应用程序状态和响应该状态的用户界面。这就是全部ngRoute
是在引擎盖下 - 状态只是住在您的地址栏中,并且如何响应该状态的配置生活在$routeProvider
(反过来,通过ngView
指令在DOM中实现)。
考虑一个简单的例子:
<div ng-controller="ApplicationController">
<h1>Some Pages</h1>
<ul>
<li><a href='' ng-click='setPage("page1")'>Page 1</a></li>
<li><a href='' ng-click='setPage("page2")'>Page 2</a></li>
<li><a href='' ng-click='setPage("page3")'>Page 3</a></li>
</ul>
<div ng-include="page + '.html'"></div>
</div>
您可以在Plunker在这里看到这方面的工作:http://plnkr.co/edit/hpnGtMkV6V4JtPRrQmes?p=preview
点击全屏按钮,这样就可以看到地址栏(与事实它不会改变)。
这是一文不值,如果没有存储在地址栏应用程序状态,用户不必书签的一个非常简单的方法他们的地方在你的应用程序或前进/后退使用其浏览器的按钮。仔细考虑你是否正在构建一个可以从这种限制中受益的应用。
路由通常被实现,使您的应用程序的不同部分更“可收藏”。
因此,尽管您可能有一个SPA,但您仍然希望用户使用URL栏来让他们回到应用程序的特定部分。
如果您只是创建您的首页index.html,它应该只是没有指定页面名称的工作。
所以,如果我有一个带有三个链接的标题的典型布局,那么我怎样才能让它点击每个链接使得与不同控制器的不同页面出现在下面。无需显示不同的网址? –
是的 - 您只需要正确配置您的Web服务器,以便在访问域时为您的index.html或同等文件提供服务。路由纯粹是可选的。 –
@geoff - 那么我怎样才能从屏幕移动到屏幕呢? –
使用ng-include根据“screenId”或等价物更改您正在使用的模板。但Rob Conklin关于可收藏的书籍提出了一个很好的观点,这就是为什么有这么多的路由解决方案。 –