Javascript Angular JS:未调用路由提供程序控制器方法?
我刚刚开始学习Angular,当我尝试使用Route provider时:Javascript Angular JS:未调用路由提供程序控制器方法?,javascript,angularjs,Javascript,Angularjs,我刚刚开始学习Angular,当我尝试使用Route provider时: var App1 = angular.module('App1',['ngRoute']); App1.config(function($routeProvider){ //alert("pre-config"); $routeProvider. when('/', { template: '<h1>main page</h1>',
var App1 = angular.module('App1',['ngRoute']);
App1.config(function($routeProvider){
//alert("pre-config");
$routeProvider.
when('/', {
template: '<h1>main page</h1>',
controller: 'heroCtrl'
}).
when('/:heroName', {
template: '<h1>Hello!</h1>',
controller: 'detailCtrl'
}).otherwise({
redirectTo: '/'
});
//alert("post-config");
});
App1.controller('heroCtrl',function($scope){
$scope.heroes = [
{"name":"Yan Xu", "Role":"Ranger", "Metamorphosis":"Ancient Dragon","desc":"Main Hero"},
{"name":"Sandria Dettorox", "Role":"Mage", "Metamorphosis":"Diviner","desc":"Main Heroine"},
{"name":"Schneider Lain", "Role":"Necromancer","Metamorphosis":"None","desc":"Main Villain"}
];
$scope.sortField = 'name';
});
App1.controller('detailCtrl',function($scope, $routeParams){
console.log("called");
console.log($routeParams);
});
var-App1=angular.module('App1',['ngRoute']);
App1.config(函数($routeProvider){
//警报(“预配置”);
$routeProvider。
当(“/”{
模板:'主页',
控制器:“heroCtrl”
}).
当(“/:heroName”{
模板:“你好!”,
控制器:“detailCtrl”
}).否则({
重定向到:'/'
});
//警报(“后配置”);
});
App1.控制器('heroCtrl',函数($scope){
$scope.heros=[
{“名字”:“严旭”,“角色”:“游侠”,“变形”:“古代龙”,“描述”:“主要英雄”},
{“姓名”:“桑德里亚·德托罗斯”,“角色”:“法师”,“变形”:“占卜师”,“描述”:“主要女主角”},
{“姓名”:“施耐德·莱恩”,“角色”:“亡灵巫师”,“变形术”:“无”,“描述”:“主要反派”}
];
$scope.sortField='name';
});
App1.控制器('detailCtrl',函数($scope,$routeParams){
控制台日志(“调用”);
控制台日志($routeParams);
});
我用第一个正常工作的控制器实现了一些列表排序。
然而,当我试图从index.html#/heroName访问路由时,它没有显示模板,没有发出警报,也没有在控制台中记录信息。有人能告诉我这里有什么问题吗?我的角度版本是1.4.7
编辑:
HTML代码:
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.js" ></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-route.min.js"></</script>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
</head>
<body ng-view>
<h1>Angular Test</h1>
<div id="Module1" ng-app="App1" class="col-sm-12">
<form action="">
<div ng-controller="heroCtrl">
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Role</th>
<th>Metamorphosis</th>
<th>Character</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="hero in heroes | filter:filter | orderBy:sortField">
<td>{{hero.name}}</td>
<td>{{hero.Role}}</td>
<td>{{hero.Metamorphosis}}</td>
<td>{{hero.desc}}</td>
</tr>
</tbody>
</table>
<input name="filter" ng-model="filter"></input><br/>
<a class="btn" ng-click="sortField='name'">Sort By Name</a>
<a class="btn" ng-click="sortField='Metamorphosis'">Sort By Morph</a>
<p>Current sort field: {{sortField}}</p>
</div>
</form>
</div>
<div id="Module2">
</div>
<script src="Angular/frontPage.js"></script>
</body>
</html>
在此处插入标题
可能是错误的,因为主页不在描述中,但我猜在主页中,您缺少ng view
指令
因此模板不能被注入。你应该有这样的东西:
<body ng-view></body>
你能说出“当我试图从index.htm#/heroName访问路由时”是什么意思吗?您尝试从浏览器地址栏向地址?@MichaelP.Bazos添加准确的字符串#/heroName
,是的,我就是这么做的。我在浏览器地址栏中键入:index.html#/heroNametry index.html/#/heroName@curiousgeek我试过了,但它会导致“找不到页面”错误。@Griffith我认为这与此无关。html只是一个显示heroCtrl中数据的表。谢谢,原来它缺少ng视图。:)看到编辑,您应该删除ng视图
下的所有内容。无论如何,它都会被路由器取代。谢谢,刚刚换了。
<body>
<div ng-view></div>
...
</body>