来自本地环境的Angular JS路由

时间:2018-08-08 21:27:16

标签: javascript angularjs angularjs-routing

我正在阅读有关Angular JS的一些教程,我可以加载单个页面并在单个文件中执行操作,但是当我到达路由时,它将无法到达另一个页面。

这是我在app.js中拥有的东西:

var app = angular.module('tutorialApp', ["ngRoute", "tutorialCtrlModule"]);

app.config(function($routeProvider) {
    $routeProvider

        .when("/", {
            templateUrl: "views/tutorial.html",
            controller: "TutorialCtrl"
        })
        .when("/tutorialSecond", {
            templateUrl: "views/tutorialSecond.html",
            controller: "TutorialCtrl2"
        })
        .otherwise({
            redirectTo: "/"
        })

})

在我的index.html中,包括以下脚本文件:

<script src="lib/angular.min.js"></script>
<script src="lib/angular-route.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/tutorialCtrl.js"></script>

然后将其放在体内:

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

在我的tutorial.html中,我有一个定义如下的链接:

<a href="#/tutorialSecond">Tutorial Second Page</a>

因此,我在加载index.html时可以看到tutorial.html的内容。 但是,当我单击“教程第二页”链接时,没有任何反应。我看到这样的URL / URI:

file:///<some_path>/AngularTutorial/index.html#!/#%2FtutorialSecond

如果我将app.js代码更改为以下内容:

.when("/", {
    templateUrl: "views/tutorialSecond.html",
    controller: "TutorialCtrl2"
})

当我加载index.html时,可以看到tutorialSecond.html内容显示出来。

那么,当我单击/ tutorialSecond的链接时,为什么未从其原始代码加载该链接?是因为我在本地以file://<path_to_index.html>的身份运行和打开index.html而不在Web服务器上运行吗?

请帮助...这使我无法继续学习本教程。 我正在使用Firefox在Windows 7x64上运行,昨天才下载了最新的可用angular js文件。

谢谢。


在某些回复中添加一些其他详细信息...

在我的tutorialCtrl.js文件中,两个控制器的定义如下:

angular.module("tutorialCtrlModule", [])

.controller("TutorialCtrl", ["$scope", function($scope) {
    $scope.tutorialObject = {};
    $scope.tutorialObject.title = "Main Page";
    $scope.tutorialObject.subTitle = "Sub title";
    }
}])

.controller("TutorialCtrl2", ["$scope", function($scope) {
    $scope.secondTutorial = "This is the second tutorial";
}]);

此.js文件包含在index.html中,如上所示。

2 个答案:

答案 0 :(得分:0)

您是否创建了与tutorialCtrl2相关的脚本文件并将其包含在index.html中?

<script src="js/controllers/tutorialCtrl2.js"></script>

答案 1 :(得分:0)

您的function! s:syntastic_checkers(...) redir => output silent SyntasticInfo redir END let result=split(output, "\n") let checkers=split(split(result[-2], ':')[-1], '\s\+') if checkers[0]=='-' let checkers=[] else call extend(checkers, split(split(result[-1], ':')[-1], '\s\+')[:1]) endif if a:0 "just echo the result echo 'Checkers: '.join(checkers, ', ') else return checkers endif endfunction command! SyntasticCheckers 不包含脚本index.html,并且您可以使用tutorialCtrl2.js告诉angular使用HTML5策略(如果可用)。

以下是支持HTML5策略的浏览器列表:http://caniuse.com/#feat=history