javascript - 将对象传递给函数时, Angular 范围不会更新

标签 javascript angularjs ionic-framework angularjs-scope

我有一个 Controller 函数,双击 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 我知道执行 result[0][0] 不好,很快就会开始研究结构。

最佳答案

为了让 likeUpdate 更改相关 updatedata.does_like 属性,您应该传递 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;
    });
};

关于javascript - 将对象传递给函数时, Angular 范围不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420592/

相关文章:

javascript - 检查/记录 PhantomJS/CasperJS 使用了多少带宽

javascript - 周末隐藏送货柜台

angularjs - 指令中的条件外部标记(即 <strong>)

ubuntu - 找不到模块 '@ionic-native/Camera/ngx'

javascript - Angular 工厂中的 $http 内部的 $http

javascript - 当阻止 Enter 键提交 AJAX 表单时,专注于下一个输入不起作用

javascript - 使用 jQuery 在 html 中追加字典

angularjs - 以 Angular 重定向 url(例如 website.com/username)

javascript - 无法显示 angularJS 范围组件

Angular 等待一个 promise 执行的循环,然后再继续下一个代码块