$ watch的ng-repeat行为

时间:2014-01-27 13:24:14

标签: php angularjs templates laravel-4

我是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()”事件,但它没有触发。

2 个答案:

答案 0 :(得分:1)

您可以在应用程序的任何具有范围引用的部分中向$ scope.data注册侦听器。这样,一切都将在数据更新时保持最新。

像这样:

$ scope。$ watch('data',callback)

答案 1 :(得分:0)

您正在考虑使用jQuery方式。你必须放弃它并考虑数据绑定和angularjs。

如果您认为angularjs方式,那么做你想要的就很容易了。 首先,你需要你的php页面打印出一个带有{{updateMe}}

的html页面

然后在你的代码中

.success(function(data){
  $scope.updateMe = data
  ......