Angular Routes发送数据到服务器

问题描述:

所以我在Angular中设计一个单页面应用程序,并且一直在做这一切!我目前正在与路由重新做,这意味着与其做$ajax$http调用服务器,我想用这样的:Angular Routes发送数据到服务器

 .when('/contact', { 
      templateUrl : '/contentMore', 
      controller : 'contentController' 
     }); 

我的问题是与templateUrl

目前我的代码看起来是这样的:

$.ajax({ 
    url: "http://example.com/contentMore", 
    type: "GET", 
    data: {request:"Section_I_Part_1_Complete",part:"1"}, 
    success: function(data){ 
     $scope.robot.ajax = true; 
     $scope.robot.sectionStayActiveI = false; 
     theData = data; 
     $scope.$apply();  
    $scope.html = theData; 
     $('#shyBox').mCustomScrollbar({ 
     theme:"dark" 
     });  
     $scope.background.push("I");  
     } 
    }); 

我所有的内容都是从同一个网址,http://example.com/contentMore服务,什么是服务是由被它在Ajax请求发送的数据来确定。如果templateUrl仅仅是/contentMore而没有这些数据,那么将不会提供任何内容,那么如何传递这些数据?

我只是对url进行编码吗?还去了templateUrl加载,这是否被认为是ajax请求的一种形式?

谢谢!

+0

您应该首先使用'$ http'而不是'jQuery.ajax()' - 使用'$ http'时,角度“知道”请求承诺何时解决 - 这将允许它触发摘要循环并更新您的应用程序中的绑定 –

+0

@AlonEitan是的,谢谢,我已经学会了这个笑声。但是在路由中使用'templateUrl'时,我甚至不得不使用'$ http'?我现在的主要问题是我没有路由,所以我的用户正在点击后退按钮并进入一个完全不同的页面。 –

+0

您可以使用[ui-router](https://github.com/angular-ui/ui-router/wiki)动态地为模板提供服务,该模板为基本的角度'$ routeProvider'添加了额外的功能 - [阅读本文]( https://github.com/angular-ui/ui-router/wiki#templates)如果@ Chic的答案不够充分。而对于你总是使用'$ http'的问题 - 答案总是使用$ http,jQuery仅作为最后的手段使用,并且应该只用于指令 –

templateUrl用于获取(通常是静态的)html。该网址应包含您尝试接收的模板的所有信息。 Angular通过XHR请求检索此内容。

+0

所以我编码url或其他东西?无论如何,当您发送额外的数据正确时,“GET”请求是如何工作的?它只是附加到URL不知何故?这是适当的方法吗? –

+0

是的,我会让URL包含足够的信息来识别要显示的模板。然后,当角度发出GET请求时,服务器将知道返回的内容。我正在使用的应用程序具有静态模板,因此服务器只是返回文件。但是既然你已经有了一个动态的响应url编码可能是最简单的 – Chic