$ http发布请求后用AJAX重新加载部分模板

时间:2015-08-07 03:34:47

标签: javascript jquery ajax angularjs

我对AngularJS还是比较新的所以请耐心等待。我尝试创建照片喜欢系统,当用户点击“喜欢”按钮时,会增加喜欢的次数。我有这个功能,但唯一的事情是我必须重新加载页面,以便"喜欢"显示。这意味着后端的所有内容都是有序的。但是,我想防止不得不重新加载页面。

需要注意的一点是,我有一个部分模板,一旦使用ng-click指令单击按钮,就会发生HTTP post请求。

HTML SNIPPET from PARTIAL TEMPLATE

<a class="like" ng-click="likeIt(//PHPCODEGOESHERE//)">Like</a>

AngularJS

userApp.controller('photoController',['$scope','$location','$window','$log','$route','$routeParams','$location','$http', function($scope,$location,$window,$log,$route,$routeParams,$location,$http){
    $scope.name = 'Photos';
    $scope.likeIt = function(parameters){
        $http.post('centralcommand.php', {id: parameters}).success(function(data,status,headers,config){
            window.location.reload(); // Causes page to reload
               }).error(function(data,status,headers,config){
            alert('failure');
        });
    };

}]);

另请注意,我已尝试更改成功回调中的innerHTML。这不起作用,因为我已经将PHP与HTML混合了,我必须在HTML代码中同时使用'",这样当我获取HTML文本并使用{{1它无法正常工作。

1 个答案:

答案 0 :(得分:0)

在仔细阅读其他方法之后我能够找到答案,它来自单独的StackOverflow帖子中提供的this答案。它与使用$templateCache服务重新加载模板缓存有关:

userApp.controller('photoController',['$scope','$location','$window','$log','$route','$routeParams','$location','$http','$templateCache', function($scope,$location,$window,$log,$route,$routeParams,$location,$http,$templateCache){
    $scope.name = 'Photos';
    var currentPageTemplate = $route.current.templateUrl; // ADDITION # 1
    $scope.routeReloader = function(parameters){
        $http.post('centralcommand.php', {id: parameters}).success(function(data,status,headers,config){
            $templateCache.remove(currentPageTemplate);   // ADDITION # 2
            $route.reload();                              // ADDITION # 3
               }).error(function(data,status,headers,config){
            alert('failure');
        });
    };

}]);