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