javascript - AngularJS - 添加 ng-view 时不起作用

标签 javascript angularjs angularjs-routing

这是我的index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0 ,user-scalable=no">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular-route.js"></script>
    <script src="app.js"></script>
    <title>TESTS</title>
</head>
<body ng-app="testApp">
<a href="#link">Testing angularjs routing</a>
<div ng-view>{{message}}</div>
<div ng-controller="TestController">{{message}}</div>
</body>
</html>

这是 app.js:

var testApp = angular.module('testApp', ['ngRoute'])
    .config(function($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl:'index.html',
                controller: 'TestController'
            }).when('/link', {
                templateUrl:'link.html',
                controller:'LinkController'
            });
    });
testApp.controller('TestController', function ($scope) {
    $scope.message = "INDEX";
});
testApp.controller('LinkController', function ($scope) {
   $scope.message = "LINK";
});

我正在尝试使路由工作,但我的链接根本无法点击,尽管它看起来像一个正常的链接。第二条消息显示“INDEX”,所以我认为 ng-view 存在问题,因为如果我删除带有 ng-view 的行,链接将再次可点击!我不知道出了什么问题!

最佳答案

您的代码有很多问题。

实际上,并不是您的链接不起作用,而是您通过引入无限循环导致浏览器崩溃。这是因为当路由为“/”时,您将 View 指向“index.html”。

所以当你开始时,你加载index.html,然后在它的ng-view中加载index.html,然后在它的 View 中加载index.html,然后加载index.html...然后轮子就这样开始了...

您的 ng-view 中还有一些内容,这些内容将被您加载的实际 View 替换。

最后,您在 View 和 index.html 中都使用了 TestController,这并不违法,但我怀疑它在任何应用程序中都没有多大意义......不过我可能是错的。

总的来说,这有点困惑。这是一个工作示例:http://plnkr.co/edit/MrdAKu86S3RoreQhO14H?p=preview

var testApp = angular.module('testApp', ['ngRoute'])
    .config(function($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl:'home.html',
                controller: 'TestController'
            }).when('/link', {
                templateUrl:'link.html',
                controller:'LinkController'
            });
    });
testApp.controller('TestController', function ($scope) {
    $scope.message = "INDEX";
});
testApp.controller('LinkController', function ($scope) {
   $scope.message = "LINK";
});

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0 ,user-scalable=no">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular-route.js"></script>
    <script src="script.js"></script>
    <title>TESTS</title>
</head>
<body ng-app="testApp">

<a href="#/">Home</a>
<a href="#/link">Testing angularjs routing</a>

<div ng-view></div>
</body>
</html>

关于javascript - AngularJS - 添加 ng-view 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630800/

相关文章:

angularjs - ui-router 为什么父状态必须是抽象的

javascript - 如何在 AngularJS 中更改 $scope 中的 URL?

javascript - 在 Javascript 中展平和合并对象数组

javascript - 重复使用代码,无需提交两次表单

javascript - 如何使用 moment.js 获取日期范围

javascript - 如何基于angularjs从网站上的url中删除index.html

javascript - 带五彩纸屑的生日脚本只运行一次

javascript - 子 div 元素未出现在由 JavaScript 函数创建的父 div 元素中

javascript - 引导 angularjs 后加载 Controller

javascript - 如何仅在angularjs中将小数限制为2位