AngularJS $ http调用响应未在视图上更新

时间:2017-01-21 09:32:03

标签: angularjs

我正在进行$ http调用,在调用之后,我收到了错误响应 要在视图上显示,我可以在控制台日志中看到错误消息,但它 没有在视图上显示。 我将$ scope上的错误消息分配给变量并进行插值 在视图上相同

以下是$ http电话的服务部分

Error Info:
Array
(
    [0] => 42P07
    [1] => 7
    [2] => ERROR:  relation "migration" already exists
)

以下是控制器部分

userService.getUser = function(searchByNum){
        var q = $q.defer();

        $http({
            method:'GET',
            url :'http://localhost:8083/simpro1/helloRest/user/'+searchByNum
        }).success(function(response){

            userService.user=response;
            q.resolve(response);
        }).error(function(error){

            userService.errors = error;
            q.reject(error);
        })

        return  q.promise;
    }

在上面的错误块中,将消息分配给变量$ scope.errMessages  但在视图上没有更新相同,但我可以看到错误消息  在控制台上。

有人可以帮我这个....

下面是{{errMessages}}变量

的视图
$scope.getDetails = function(searchByNum){

          userService.getUser(searchByNum)
          .then(function(res){
              console.log(res);
          },function(error){

              **$scope.errMessages = userService.errors.errMessage;**
          })
      }

2 个答案:

答案 0 :(得分:0)

您在成功函数中使用 private EditText outputResult; outputResult = (EditText)findViewById(R.id.display); String enteredInput = outputResult.getText().toString(); int end = outputResult.getSelectionEnd(); if(enteredInput.length() > 0){ String beforeCursor= enteredInput.substring(0, end-1); String afterCursor= enteredInput.substring(end,enteredInput.length()); enteredInput= beforeCursor+afterCursor; outputResult.setText(enteredInput); ,在错误函数中使用console.log$scope.errMessages将执行(如果promise成功解析)或console.log变量将被设置(如果它拒绝)。

请注意,变量只会设置如果承诺拒绝,则userService.errors的值不是未定义

那说,为什么要直接将变量分配给 userService.errors ?只需在拒绝中发送该数据,然后在 .then()错误函数中进行分配。

答案 1 :(得分:-1)

使用{"para1":[1,2,3],"para2":[1,2,3]} 打印错误,这可能会启动新的摘要周期。

$timeout

将此行放入错误块中。并且不要忘记添加$ timeout作为依赖