Angularjs路由
Angularjs routing
我正在学习 Angularjs 并且遇到路由问题。我写了一个非常简单的苗条演示示例,它使用开箱即用的 MVC5。主页显示正常,但当我单击关于 link 时,它不显示关于页面,并且未命中 AboutController 断点。并在控制台中出现以下错误
错误:[$compile:tpload] 加载模板失败:templates/indexView.html(HTTP 状态:404 未找到)。
如果我调换这两条路线,则会显示我的“关于”页面,但在单击“主页”link 时出现错误,因此我确定 html 可以加载。我需要做什么才能使路由正常工作?
下面是index.cshtml
@{
ViewBag.Title = "Home Page";
ViewBag.InitModule = "homeIndex";
}
@section Scripts {
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/js/home-index.js"></script>
}
<div data-ng-view=""></div>
下面是About.cshtml
@{
ViewBag.Title = "About Page";
ViewBag.InitModule = "homeIndex";
}
@section Scripts {
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/js/home-index.js"></script>
}
<div data-ng-view=""></div>
下面是家-index.js
// home-index.js
var module = angular.module("homeIndex", ["ngRoute"]);
var angularFormsApp = angular.module('homeIndex', ["ngRoute"]);
angularFormsApp.config(["$routeProvider",
function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "templates/indexView.html",
controller: "HomeController"
})
.when("/About", {
templateUrl: "templates/aboutView.html",
controller: "AboutController"
});
}]);
angularFormsApp.controller("HomeController",
["$scope",
function ($scope) {
var x = 1;
}]);
angularFormsApp.controller("AboutController",
["$scope",
function ($scope) {
var x = 1;
}]);
var x=1 没有任何意义,只是为了设置断点。
下面是indexView.html
<h3>Arrived at Index Page</h3>
aboutView.html
<h3>About Page</h3>
我在 _Layout.cshtml html 标签中也有下面的钩子 angular
data-ng-app="@ViewBag.InitModule"
问题似乎是 MVC 正在处理您希望由 Angular 处理的路由。
查看此问题,了解有关在同一项目中同时使用 AngularJS 和 MVC 的更多信息:
Should I be using both AngularJS and ASP.NET MVC?
这是开始将两者结合使用的很好的指南,它还特别涉及到路由:
Getting started with AngularJS and ASP.NET MVC
希望对您有所帮助,如果您需要更多信息或有任何不清楚之处,请告诉我们。
我正在学习 Angularjs 并且遇到路由问题。我写了一个非常简单的苗条演示示例,它使用开箱即用的 MVC5。主页显示正常,但当我单击关于 link 时,它不显示关于页面,并且未命中 AboutController 断点。并在控制台中出现以下错误 错误:[$compile:tpload] 加载模板失败:templates/indexView.html(HTTP 状态:404 未找到)。
如果我调换这两条路线,则会显示我的“关于”页面,但在单击“主页”link 时出现错误,因此我确定 html 可以加载。我需要做什么才能使路由正常工作?
下面是index.cshtml
@{
ViewBag.Title = "Home Page";
ViewBag.InitModule = "homeIndex";
}
@section Scripts {
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/js/home-index.js"></script>
}
<div data-ng-view=""></div>
下面是About.cshtml
@{
ViewBag.Title = "About Page";
ViewBag.InitModule = "homeIndex";
}
@section Scripts {
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/angular-route.js"></script>
<script src="~/js/home-index.js"></script>
}
<div data-ng-view=""></div>
下面是家-index.js
// home-index.js
var module = angular.module("homeIndex", ["ngRoute"]);
var angularFormsApp = angular.module('homeIndex', ["ngRoute"]);
angularFormsApp.config(["$routeProvider",
function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "templates/indexView.html",
controller: "HomeController"
})
.when("/About", {
templateUrl: "templates/aboutView.html",
controller: "AboutController"
});
}]);
angularFormsApp.controller("HomeController",
["$scope",
function ($scope) {
var x = 1;
}]);
angularFormsApp.controller("AboutController",
["$scope",
function ($scope) {
var x = 1;
}]);
var x=1 没有任何意义,只是为了设置断点。
下面是indexView.html
<h3>Arrived at Index Page</h3>
<h3>About Page</h3>
我在 _Layout.cshtml html 标签中也有下面的钩子 angular data-ng-app="@ViewBag.InitModule"
问题似乎是 MVC 正在处理您希望由 Angular 处理的路由。
查看此问题,了解有关在同一项目中同时使用 AngularJS 和 MVC 的更多信息: Should I be using both AngularJS and ASP.NET MVC?
这是开始将两者结合使用的很好的指南,它还特别涉及到路由: Getting started with AngularJS and ASP.NET MVC
希望对您有所帮助,如果您需要更多信息或有任何不清楚之处,请告诉我们。