在ng-show上添加一个事件

时间:2014-02-05 14:20:34

标签: angularjs

我不是一个有角度的主人,我试着做点什么。 假设像“我喜欢/我不喜欢”这样的功能。 当你在文章上时,你可以点击“我喜欢”按钮。如果您已经喜欢这篇文章,则会隐藏此按钮并显示“我不再喜欢”。

    <button ng-hide="like" class="btn btn-success btn-xs pull-right" ng-click="iLike()">I like</button>
<button ng-show="like" class="btn btn-danger btn-xs pull-right" ng-click="notLike()">Don't like anymore</button> 

当我重新加载页面而不是点击操作时,一切都按预期工作。 基本上我的iLike功能看起来像我认为错过的行为来自失踪的回报或要发射的事件:(

$scope.iLike = function(){
        ##hereIDoAnAPICalls##, function(){ 
           $scope.like = false;
        }, function(){
            $scope.like = true;
        }
    }

1 个答案:

答案 0 :(得分:1)

尝试将范围变量赋值包装到apply中,我认为它可以提供帮助,因为API调用可能是异步的,并且从angular的外部调用click事件

$scope.iLike = function() {
    APIcall.then(function () {
        $scope.$apply(function() {
            $scope.like = false;
        });
    }, function () {...the same...});
};