更新视图中的AngularJS范围变量
我有以下AngularJS控制器函数,它向Web服务发出JSONP请求,以JSON文件的形式获取数据,并将值分配给我通过AngularJS指令(如{variableName})在UI中显示的范围变量。当我在页面加载时运行此函数时,它工作正常,但是当我将其作为函数调用时,它不会更新视图值:更新视图中的AngularJS范围变量,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我有以下AngularJS控制器函数,它向Web服务发出JSONP请求,以JSON文件的形式获取数据,并将值分配给我通过AngularJS指令(如{variableName})在UI中显示的范围变量。当我在页面加载时运行此函数时,它工作正常,但是当我将其作为函数调用时,它不会更新视图值: $scope.getData = function(id) { $http.jsonp( webServices.getData+'?callback=JSON_CALLBACK', config ).
$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的文章,但不知道在哪里以及如何使用它
谢谢。把我之前吃的东西擦掉 在您的承诺处理程序中,您有:
$scope.data.receivedData = campaign.receivedData;
但是您还没有定义什么是活动,我假设您希望在$scope上设置与您的视图绑定到的活动相关的内容,该活动位于调用webServices.getData返回的数据中。不要绑定到函数。。。绑定到一个值。 还有:回报承诺 如果以后要再次调用getData,不要只是调用它,而是将它再次赋给绑定变量
$scope.myActualData = $scope.getData();
以下解决方案有用吗
$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();
}
})
当我这样做的时候,我得到了这个错误:查看更新的代码,并将所有逻辑放在范围内。应用,这样你只需强制摘要循环运行一次。谢谢,但结果是一样的-错误你是否调查过将此调用放入角度服务/工厂,然后从调用返回对服务的承诺?这样,控制器内部就不会有任何非角度代码导致与摘要周期冲突。谢谢,布罗科。有没有示例代码?我不确定我得到了你所指的。把它看作是一个简单的文本输入。
$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();
}
})