我是AngularJs的新手。我使用AngularJS作为前端,使用Laravel作为后端。 我有一种情况,我希望页面在ajax成功时刷新(当用户发布数据时)。
我有这样的模板index.blade.php
:
@extends(layout)
@section
header page
post page
main page
footer page
@endsection
现在用户正在从帖子页面发布更新 在那个成功我想要刷新主页上的数据
function addpost ($scope, $http){
$scope.loadData = function(){
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$http.post( baseurl+"alldata").success(function(data)
{
$scope.posts = data;
});
}
$scope.addComment = function(post){
if("undefined" != post.hoot){
// Angular AJAX call
$http({
method : "POST",
url :baseurl+ "url",
data : "post="+post
}).success(function(data){
$scope.posts = data;//json response
// here i want page to be refreshed or div refresh of sub-main page
});`
$scope.post = ' ';`
}
}
$scope.loadData();
}`
现在的问题是,如果我从其他子页面发布数据,然后在其他子页面上显示它。 Iam调用addcomment在模型中添加发布数据,然后loaddata()从视图中获取ng-repeat模型的所有数据。
如果我要去观看比赛活动。它将继续刷新模型,从而查看数据。假设我正在评论部分,我们可以喜欢,不喜欢和评论帖子。我想在ng-repeat中使用ng-click事件(这是刷新视图)。
Test.controller('Testing',['$scope', '$http', function($scope,$http){
$scope.products = {};
$http.post( baseurl+"ajax/getall").success(function(data)
{
$scope.products = data;
});
$scope.$watch("products", function(newValue, oldValue) {
if (newValue === oldValue) { return; } // AKA first run
$scope.products= newValue;
});
});
$scope.Hello= function(){
alert("hello");
}
}]);
它将继续刷新页面,因此不会点击ng-repeat内的事件,即ng-click。 我已经解雇了ng-click =“Hello()”事件,但它没有触发。
答案 0 :(得分:1)
您可以在应用程序的任何具有范围引用的部分中向$ scope.data注册侦听器。这样,一切都将在数据更新时保持最新。
像这样:
$ scope。$ watch('data',callback)
答案 1 :(得分:0)
您正在考虑使用jQuery方式。你必须放弃它并考虑数据绑定和angularjs。
如果您认为angularjs方式,那么做你想要的就很容易了。 首先,你需要你的php页面打印出一个带有{{updateMe}}
的html页面然后在你的代码中
.success(function(data){
$scope.updateMe = data
......