调用angularjs控制器方法后未更新模板

调用angularjs控制器方法后未更新模板,angularjs,Angularjs,使用控制器方法进行搜索后,我无法更新模板 我有一个控制器,它将列表数据正确地添加到模板中,如果没有执行搜索。从服务中检索数据 当我按月搜索并在console.log中调用搜索方法后生成结果时,结果是正确的数据,但html模板不显示此数据,而是显示未过滤的数据 我试图返回$scope.data或scope.apply,但它不起作用 如何使用过滤后的数据更新模板 具有搜索方法的控制器: .controller('AcpCtrl', function($scope, ApiAcpFactory, $i

使用控制器方法进行搜索后,我无法更新模板

我有一个控制器,它将列表数据正确地添加到模板中,如果没有执行搜索。从服务中检索数据

当我按月搜索并在console.log中调用搜索方法后生成结果时,结果是正确的数据,但html模板不显示此数据,而是显示未过滤的数据

我试图返回$scope.data或scope.apply,但它不起作用

如何使用过滤后的数据更新模板

具有搜索方法的控制器:

.controller('AcpCtrl', function($scope, ApiAcpFactory, $ionicLoading, $timeout, $http) {  
  $scope.data = null;
  $ionicLoading.show({noBackdrop: true,template: '<p>Searching ...</p>'});
  ApiAcpFactory.getApiData()
    .then(function(result) {      
        var acp = {};
        acp.resultdata = [ result ];      
        $scope.data = acp.resultdata;      
        $ionicLoading.hide();
   })

   $scope.search = function(data) {
        $scope.data = null;
        $scope.formData = {};
        $scope.formData.month = data.month;
        $scope.formData.origin  = data.origin;
        $ionicLoading.show({noBackdrop: false,template: '<p>Searching</p>'});        
        ApiAcpFactory.getApiData($scope.formData)
        .then(function(result) {             
            $scope.data = JSON.stringify(result);
            console.log(' scope.data '+$scope.data);      
            $ionicLoading.hide();
       })
        return $scope.data;
    }
})

我很确定原因是您的更改发生在延迟回调中。所以Angular并没有注意到在它的周期中发生的转折

你说你试过$apply,你能发布你试过的吗

在这种情况下,这将是正确的使用:

$scope.$apply(函数(){
$scope.data=acp.resultdata;

});我很确定原因是您的更改发生在延迟回调中。所以Angular并没有注意到在它的周期中发生的转折

你说你试过$apply,你能发布你试过的吗

在这种情况下,这将是正确的使用:

$scope.$apply(函数(){
$scope.data=acp.resultdata;

});我是angularjs的新手,我以前尝试过
$scope.apply($scope.data)错误是:错误:[$rootScope:inprog]$digest已在进行中,我还尝试:
$scope.$apply(function(){$scope.data=acp.resultdata;})
并获得与上述相同的错误消息。console.log显示不同的数据。似乎控制器再次运行,控制器的主体将生成初始列表。我将尝试分离模板和控制器,不知道是否是处理此问题的最佳方法。使用http.post
最简单的形式,在console.log中,我看到了新的预期数据,模板不再显示旧数据。剩下的唯一问题是ng repeat duplicates,使用track by$index使其逐项迭代Json结果track的每个字符,或者任何其他数据元素也会触发复制错误消息。JSON数据的结构与初始列表相同,但它工作正常。不确定确切的问题,也许您可以粘贴错误。然而,听起来这可能是对您的问题的解决方案或解释:奇怪,但原因是调用了JSON_stringify,当我停止使用它时,复制错误也停止了。如果有办法追踪复制品的位置就好了。我很高兴你找到了解决方案!我是angularjs的新手,我以前尝试过
$scope.apply($scope.data)错误是:错误:[$rootScope:inprog]$digest已在进行中,我还尝试:
$scope.$apply(function(){$scope.data=acp.resultdata;})
并获得与上述相同的错误消息。console.log显示不同的数据。似乎控制器再次运行,控制器的主体将生成初始列表。我将尝试分离模板和控制器,不知道是否是处理此问题的最佳方法。使用http.post
最简单的形式,在console.log中,我看到了新的预期数据,模板不再显示旧数据。剩下的唯一问题是ng repeat duplicates,使用track by$index使其逐项迭代Json结果track的每个字符,或者任何其他数据元素也会触发复制错误消息。JSON数据的结构与初始列表相同,但它工作正常。不确定确切的问题,也许您可以粘贴错误。然而,听起来这可能是对您的问题的解决方案或解释:奇怪,但原因是调用了JSON_stringify,当我停止使用它时,复制错误也停止了。如果有办法追踪复制品的位置就好了。我很高兴你找到了解决方案!
.factory('ApiAcpFactory', function($http, $q, ApiAcpEndpoint) { 
  var getApiData = function(data) {    
    var q = $q.defer();    
    $http.post(ApiAcpEndpoint.url,data)
    .success(function(data) {
        q.resolve(data);
    })
    .error(function(error){
        console.log('Had an error'+error)
        q.reject(error);
    })
    return q.promise;
  }
  return {
    getApiData: getApiData    
  };

})