[英]AngularJs. Routing. Handle server request. Few questions
我有以下页面:
<!doctype html>
<html lang="en" ng-app="myModule">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
var myModule = angular.module('somename', []);
myModule.config(function ($routeProvider) {
$routeProvider.
when('/zzz', {templateUrl:'' , controller: TestCtrl}).
when('/test1', {template:' ', controller: TestDataCtrl}).
when('/test2', {template:'/abc ', controller: function TestCtrl1() {alert("test2")} }).
when('/test/:userid', { controller: TestDataCtrl }).
when('/users/:userid', {templateUrl: '/users/:userid?html=true', controller: UserDataCtrl}).
otherwise({redirectTo: '/works'});
});
function TestCtrl($scope) { alert("test") }
function UserDataCtrl($scope, $http) {
...
}
function TestDataCtrl($scope, $http, $routeParams, $route) {
$http.get('users/1').success(function (data) {
console.log("UserDataCtrl");
$scope.user = data;
});
}
</script>
</head>
<body ng-app="myModule">
<div ng-view></div>
{{1+1}}
</body>
</html>
1)当我导航到以下URL http://localhost:7000/service/1#/test1
,总是向服务器发送两个请求(在我的情况下为REST服务),类似于http://localhost:7000/service/1
和http://localhost:7000/archivarius/users/1
。 我可以以某种方式处理第一个(无用的)浏览器请求,也许使用AngularJs控制器吗? 我的意思是,当用户输入URL http://localhost:7000/service/1#/test1
,唯一的事情(请求)应该在test2控制器中发生。 可能吗?
2)在路由配置中,为什么必须指定template或templateUrl? 为什么我不能只为路由指定控制器?
您应该始终跟踪语法正确的代码。 就你而言
ng-app
指令提供了错误的名称(在第2行:它应该为ng-app="someoname"
因为您模块的名称为"somename"
ng-app
( <html lang="en" ng-app="myModule">
),在您的body
标签处有另一个( <body ng-app="myModule">
) 在处理完这些语法问题后,您可以跟踪应用程序的逻辑流程。
您可能会看到两个http请求,因为$ http.get('users / 1')和'/ users /:userid'路由中的templateUrl。
在路由配置中,应指定template或templateUrl以及一个用于路由的控制器。
再见
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.