我对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它无法正常工作。
答案 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');
});
};
}]);