我有以下AngularJS控制器函数,该函数向Web服务发出JSONP请求,将数据作为JSON文件获取,并将值分配给我通过AngularJS指令(如{{variableName}})在UI中显示的范围变量。当我在页面加载时运行它时,此函数正常工作,但是当我将其称为函数时,它不会更新视图值:
$scope.getData = function(id) {
$http.jsonp( webServices.getData+'?callback=JSON_CALLBACK', config ).then( function ( response ) {
$scope.data = response.data;
if($scope.data.status == "ok") {
$scope.data.receivedData = campaign.receivedData;
}
})
}
当JSONP调用返回值时,有人可以给我一个关于如何动态更新视图(表单输入控件)中的值的提示吗?我读了$ apply(),但不知道在哪里以及如何使用它。
感谢。
答案 0 :(得分:0)
抓我早先的东西......
在你当时的承诺处理程序中,你有:
$scope.data.receivedData = campaign.receivedData;
但是您还没有定义什么广告系列,我假设您要在$ scope(您将要查看的内容将绑定到的内容)上设置与数据中的campaign
相关的内容从致电webServices.getData
回来。
答案 1 :(得分:0)
不绑定到函数...绑定到值。
并且:return
promise
$scope.getData = function(id) {
// return the promise....
return $http.jsonp( webServices.getData+'?callback=JSON_CALLBACK', config ).then( function ( response ) {
$scope.data = response.data;
if($scope.data.status == "ok") {
$scope.data.receivedData = campaign.receivedData;
}
})
}
// fetch that data into a variable, that you bind to.
$scope.myActualData = $scope.getData();
如果你以后想再次调用getData,不要只是调用它,再次将它再次绑定到绑定变量。
$scope.myActualData = $scope.getData();
答案 2 :(得分:0)
以下解决方案是否有帮助?
$http.jsonp( webServices.getData+'?callback=JSON_CALLBACK', config ).then( function ( response ) {
$scope.data = response.data;
if($scope.data.status == "ok") {
$scope.data.receivedData = campaign.receivedData;
$scope.$apply();
}
})