带有变量的$ http范围问题

时间:2014-05-05 03:31:14

标签: javascript angularjs

$http({
    url: "php/myuId.php",
    method: "POST",
    data: {
        'userId': userId,
    },
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function(data, status, headers, config) {

        $scope.myId= data;
//return last inserted id
    }).error(function(data, status, headers, config) {
    });
//can't use it outside?
        $scope.user.push({
        "userId":  $scope.myId,

    });

很奇怪,当我在范围$ http之外使用它时,$ scope.myId没有改变,所以我无法将我最后插入的id推到前端。

2 个答案:

答案 0 :(得分:2)

问题是它是异步的,所以在promise返回之前你还没有数据。您可以将$ scope.user.push放在成功回调中,也可以使用$ scope。$ watch(“myId”...在值更新时注册。

答案 1 :(得分:0)

尝试使用.apply();如果你不这样做,JS的变化就不会被看到或反映在UI中。

}).success(function(data, status, headers, config) {
    $scope.apply(function(){
        $scope.myId = data;
    });
})