在对象中传递函数时,角度范围不会更新

时间:2016-02-15 22:51:58

标签: javascript angularjs ionic-framework angularjs-scope

我有一个控制器功能,只需双击ng重复项目就可以调用它:

$scope.likeUpdate = function(update) {
    $http.post( $rootScope.apiURL + 'likeupdate', {
        update_id : update.data.id,
        user_id : $rootScope.currentUser.id
    }).success(function(result, response){
        update.data.does_like = result[0][0].does_like;
        console.log(result[0][0].does_like);
    });
}

对我而言,应该更改我的Ionic应用程序并在屏幕上更新'does_like'值。

然而,它没有。

这是我的重复:

<div ng-repeat="update in updates" class="custom-card">
    <div ng-show="{{update.image}}" class="image">
        <img on-double-tap="likeUpdate({{update.data.id}})" class="full-image" ng-src="https://s3-eu-west-1.amazonaws.com/images/{{update.image.name}}" imageonload>
    </div>
    {{ update.data.does_like }}
</div>

在页面加载时,update.data.does_like正确显示了我需要的内容,页面刷新后将显示它应该显示的内容。但是在我的代码中,它没有在成功回调中实时更新。

控制台日志显示正确的输出。

P.S我知道做结果[0] [0]不好,很快就会在结构上工作。

2 个答案:

答案 0 :(得分:0)

update is a local variable to the function.

$scope.updates = result[0];

但你的结构看起来很不错。

答案 1 :(得分:0)

为了让likeUpdate更改相关data.does_like的{​​{1}}属性,您应该将update传递给它,而不是update解析{{update.data.id}}到,即

<img on-double-tap="likeUpdate(update)" ...

在我们进行更改时,您应该删除已弃用的success方法

$scope.likeUpdate = function(update) {
    $http.post($rootScope.apiURL + 'likeupdate', {
        update_id : update.data.id,
        user_id : $rootScope.currentUser.id
    }).then(function(response) {
        update.data.does_like = response.data[0][0].does_like;
    });
};