AngularJs.路由.处理服务器请求.很少有问题

AngularJs. Routing. Handle server request. Few questions

本文关键字:有问题 请求 服务器 路由 处理 AngularJs      更新时间:2023-09-26

我有以下页面:

<!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服务)如CCD_ 2和CCD_。我可以用AngularJs的控制器处理第一个(无用的)浏览器请求吗?我的意思是,当用户输入URLhttp://localhost:7000/service/1#/test1时,test2控制器中应该只发生一些事情(请求)。有可能吗?

2) 在路由配置中,为什么我必须指定template或templateUrl?为什么我不能只指定路线的控制器?

您应该始终跟踪语法正确的代码。在你的情况下,你是

  1. ng-app指令提供了错误的名称(在第2行:它应该是ng-app="someoname",因为模块的名称是"somename"
  2. 多次初始化应用程序:在第2行有一个ng-app<html lang="en" ng-app="myModule">),在body标记处有另一个(<body ng-app="myModule">

处理完这些语法问题后,您可以跟踪应用程序的逻辑流程。

您可能会看到两个http请求,因为$http.get('users/1')和templateUrl在"/users/:userid"路由中。

在路由配置中,您应该为路由指定模板或templateUrl和一个控制器。

再见