0
私は、ユーザーをアクティブ/非アクティブにするボタンを含むテーブルを持っています。そのボタンをクリックすると、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.js
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;
});
});
};
}
、なぜあなたは、テーブル全体をリフレッシュしていますか?指定したidの –
でアカウントのオブジェクトだけを更新する必要があります。これは、呼び出された関数に応じてコンテキストが変更されるため、 'this'を使用しません。代わりに 'this 'のエイリアスを作成するか(' var controller = this; 'コールバック' controller.account = data')、またはES6 Arrow関数または '.bind()'を使用する – Claies
[コールバック内の正しい\ 'this \ 'にアクセスするには?](http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback) – Claies