使用$ location和ngView在AngularJS网址上遇到问题

时间:2014-10-01 17:15:38

标签: angularjs url-routing

我使用$ location在AngularJS网址上遇到了多个问题。基本网址为:http://localhost:3000/

第一

当我点击<a>标记将页面的索引移动到id:<a href="#home">Home</a>时。 网址变为:http://localhost:3000/home,页面偏移量不会更改。我必须再次点击以获取http://localhost:3000/home#home以便偏移更改。

第二

因为我正在使用$routeProvider配置(请参阅下面的“应用程序配置”),我在index.html中使用ng-view(首页加载):

<body ng-app="app">
    <div ng-view class="{{class}}"></div>
</body>

这里的问题是我无法更改ng-view内容。第一个视图views/home.html已正确加载。在home.html页面上,我有:<a href="/register">Registration</a>。 我的基本网址仍然相同,当我第一次点击此链接时,网址变为:http://localhost:3000/register。哪个看起来正确!但观点并没有改变。我的页面上仍然有views/home.html

第三

如果我输入类似.otherwise()的网址,则应用程序配置的http://localhost:3000/toto规则不会重定向,它会在页面上写Cannot GET /toto

应用程序配置

angular.module("app", ["ngRoute", "ui.bootstrap"])
    .config(["$locationProvider", "$routeProvider", function($locationProvider, $routeProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider
        .when("/", {
            templateUrl: "views/home.html",
            controller: "HomeCtrl"
        })
        .when("/:id", {
            templateUrl: "views/home.html",
            controller: "HomeCtrl"
        })
        .when("/register", {
            templateUrl: "views/register.html",
            controller: "RegisterCtrl"
        })
        .otherwise({
            redirectTo: "views/error.html"
        });
    }]);

这是多个问题,我一次写下这些问题,因为它们可能是相关的。但是这个功能我真的遇到了很多麻烦。我想知道我是否应该使用ngInclude而不是ngView。

任何人都能解释我所有这些错误的行为以及我做错了吗?

还有使用ngView的最佳做法吗?或者在特定的背景下?

0 个答案:

没有答案