Javascript 承诺后绑定数据

Javascript 承诺后绑定数据,javascript,html,angularjs,angularjs-bindings,Javascript,Html,Angularjs,Angularjs Bindings,我有一个表,其中包含一个激活/禁用用户的按钮。当我单击该按钮时,它会发出一个API调用来更改用户的状态。我遇到的问题是在API调用后对视图执行实时更新。目前,我看到文本开关的唯一方式是刷新页面 这是我的Admin.html,单击按钮时,按钮上的文本应在“活动”和“非活动”之间切换 <tr ng-repeat="account in $ctrl.account"> <td>{{account.FirstName}}</td> <td>{{ac

我有一个表,其中包含一个激活/禁用用户的按钮。当我单击该按钮时,它会发出一个API调用来更改用户的状态。我遇到的问题是在API调用后对视图执行实时更新。目前,我看到文本开关的唯一方式是刷新页面

这是我的Admin.html,单击按钮时,按钮上的文本应在“活动”和“非活动”之间切换

<tr ng-repeat="account in $ctrl.account">
  <td>{{account.FirstName}}</td>
  <td>{{account.LastName}}</td>
  <td class="text-center">
    <button class="btn btn-sm btn-active-status" ng-class="account.Active === true ? 'btn-info' : 'btn-danger'" ng-bind="account.Active === true ? 'Active' : 'Inactive'" ng-click="$ctrl.UpdateActiveStatus(account.Id, account.Active)"></button>
  </td>
</tr>

这是解决我问题的办法。如果有比这更好的方法,请告诉我

功能AdminController(AccountService){
var控制器=此;
此。$onInit=函数(){
controller.account=this.accounts;
}
this.UpdateActiveStatus=函数(id、状态){
风险值数据={
Id:Id,
活动:!状态
};
UpdateActiveStatus(数据)。然后(函数(数据){
对于(变量i=0;i
成功调用api后,为什么要刷新整个表?您应该只使用给定的ID更新帐户对象。不要使用
this
,因为它的上下文会根据调用它的函数而变化。您应该为
this
(即
var controller=this;
创建一个别名,然后在回调中
controller.account=data
),或者使用ES6箭头函数,或者
.bind()
可能重复的好主意,我会这样做@mariainesparnisarit感谢您的提示,这让它工作起来了@克莱斯
app.component('admin', {
    templateUrl: 'Content/app/components/admin/Admin.html',
    controller: AdminController,
    bindings: {
        accounts: '='
    }
})

function AdminController(AccountService) {
    this.$onInit = function () {
        this.account = this.accounts;
    }

    this.UpdateActiveStatus = function (id, status) {
        var data = {
            Id: id,
            Active: !status
        };

        AccountService.UpdateActiveStatus(data).then(function (response) {
            AccountService.GetAccounts().then(function (data) {
                this.account = data;
            });
        });
    };
}