2016-08-19 47 views
0

我试图将按钮的名称从暂停付款更改为取消支付,它应该首先检查checkstatus.is_holdpayment的状态,然后执行函数userhold_payment()。我尝试了各种各样的东西,ng-show,ng-if,但是按钮的名称在点击时不会改变。点击它应该去,Hold,Unhold,Hold,Unhold,并执行相同的功能userhold_payment()。我想用AngularJS改变按钮的名字。什么是错误。这里是main.html如何更改按钮的名称? Ng-show,ng-if,ng-click不起作用?

<div ng-init="check_status()"> 
<button type="button" ng-if="checkstatus.is_hold_payment" ng-click="userhold_payment();" class="btn-success btn-lg hold_payment_html" style="margin-top:7px; font-size:16px">Hold</button> 
<button type="button" ng-if="!checkstatus.is_hold_payment" ng-click="userhold_payment();" class="btn-success btn-lg hold_payment_html" style="margin-top:7px; font-size:16px">UnHold</button> 
</div> 

这是功能的控制器。

$scope.userhold_payment = function() { 
    $http.get('http://localhost/ngaffiliate/api/payment/change_hold_payment_status') 
     .then(function(response) { 
      console.log('I called'); 
      $scope.userhold = response.data; 
      console.log($scope.userhold.is_hold_payment); 
     }); 
}; 

//this will call when ever your controller reinstance 
($scope.check_status = function() { 
    $http.get('http://localhost/ngaffiliate/api/payment/check_payment_status') 
     .then(function(response) { 
      console.log('I called now') 
      $scope.checkstatus = response.data; 
      // console.log(response); 
      console.log($scope.checkstatus.is_hold_payment); 
      if($scope.checkstatus.is_hold_payment=="0") 
       $scope.checkstatus.is_hold_payment = true; 


      else($scope.checkstatus.is_hold_payment=="1") 
       $scope.checkstatus.is_hold_payment = false; 
      $scope.checkstatus.is_hold_payment =!$scope.checkstatus.is_hold_payment; 
         console.log($scope.checkstatus.is_hold_payment); 



     }); 
})(); 
+0

你不改变'$ scope.checkstatus值,is_hold_payment'在被要求点击('$ scope.userhold_payment()')的功能,所以自然文字不会改变。尝试在'$ scope.userhold_payment()'中调用'$ scope.check_status()'。 是的,你应该也可以删除Maciej Sikora告诉你的行,因为它会恢复变化。 – Fissio

回答

0

正如我在我的评论已经提到的,你应该叫$scope.check_status()$scope.userhold_payment()功能,因为功能不正常改变$scope.checkstatus.is_hold_payment变量的值。我还删除了您将该变量的值反转的行。

这里Plunker证明:https://plnkr.co/edit/SWpdHGaNWIkyIWSvHyUU?p=preview

+0

谢谢这么多:) –

0

尝试使用这样的:

<button type="button" ng-click="userhold_payment();" class="btn-success btn-lg hold_payment_html" style="margin-top:7px; font-size:16px">{{checkstatus.is_hold_payment ?? "Hold": "Unhold"}}</button>