繁体   English   中英

AngularJs。 路由。 处理服务器请求。 几个问题

[英]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/1http://localhost:7000/archivarius/users/1 我可以以某种方式处理第一个(无用的)浏览器请求,也许使用AngularJs控制器吗? 我的意思是,当用户输入URL http://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')和'/ users /:userid'路由中的templateUrl。

在路由配置中,应指定template或templateUrl以及一个用于路由的控制器。

再见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM