如何创建不使用路由的AngularJS SPA应用程序?

时间:2014-02-12 16:37:52

标签: javascript angularjs angular-routing

我想创建一个AngularJS应用程序,该应用程序在.com之后只使用一个HTTP域。例如,这是浏览器中显示的唯一URL:

www.myapp.com

这可能吗?我需要做什么?到目前为止,我见过的所有应用程序都使用了类似的东西:

www.myapp.com/users
www.myapp.com/screen1

2 个答案:

答案 0 :(得分:1)

不确定;您所需要的只是某种响应该状态的顶级应用程序状态和UI。所有ngRoute都在幕后 - 状态只存在于您的地址栏中,并且如何响应该状态的配置存在于$routeProvider中(反过来,实现在DOM通过ngView指令。)

考虑这个简单的例子:

<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>
app.controller('ApplicationController', function($scope) {
  $scope.page = 'page1';

  $scope.setPage = function(pg) {
    $scope.page = pg;
  }
});

你可以在这里看到这个在Plunker中工作:http://plnkr.co/edit/hpnGtMkV6V4JtPRrQmes?p=preview

单击全屏按钮,以便您可以看到地址栏(以及它不会更改的事实)。


如果不将地址栏中的应用程序状态存储在地址栏中,用户就无法轻松地在应用程序中添加书签或使用浏览器按钮前进/后退。仔细考虑您是否正在构建一个可以从此类限制中受益的应用程序。

答案 1 :(得分:0)

通常会实施路由,以使您的应用的不同部分更“可收藏”。

因此,尽管您可能拥有SPA,但您仍可能希望用户使用URL栏让他们返回应用程序的特定部分。

如果您只是创建起始页index.html,它应该可以正常工作而不指定页面名称。