2017-10-29 134 views
0

我有一個按鈕,,如example.html所示,它位於ng-repeat指令內。因此,還有更多喜歡它的人。 如何在調用syncAccount()時將fa-spin類添加到子元素i,然後從pullProfile()的末尾刪除同一子元素中的類fa-spinAngularJS - 將子類添加到子元素

----- example.html的

<md-button class="md-raised md-default" ng-click="syncAccount(account.username)"> 
    <i class="fal fa-sync"></i> Re-sync 
</md-button> 

----- example.controller.js

$scope.syncAccount = function(username) 
{ 
    console.log('syncing ' + username + ' ...') 
    $scope.pullProfile(username) 
} 

$scope.pullProfile = function(username) 
{ 
    // do stuff 
    // remove the fa-spin class 
} 

我一直在使用angular.element().closest()沒有成功嘗試。例如:

----- example.html的

<md-button class="md-raised md-default" ng-click="syncAccount($event, account.username)"> 
    <i class="fal fa-sync"></i> Re-sync 
</md-button> 

----- example.controller.js

(更新,以反映溶液通過chiliNUT建議在評論中)

$scope.syncAccount = function($event, username) 
{ 
    var spinElement = angular.element($event.currentTarget).find('.fa-sync') 
    spinElement.addClass('fa-spin') 

    console.log('syncing ' + username + ' ...') 
    $scope.pullProfile(spinElement, username) 
} 

$scope.pullProfile = function(spinElement, username) 
{ 
    // do stuff 
    spinElement.removeClass('fa-spin') 
} 

旁白:

使用.find('i').find()僅由標籤名限於查找沒有工作。在這裏看到:https://docs.angularjs.org/api/ng/function/angular.element

+1

這不是如何'closest'作品。而不是'.closest('i')'try'.find('i')' – chiliNUT

+0

在我的例子中,'.find('i')'沒有返回任何東西。 '.find('。fa-sync')'雖然有效,但效果相同。如果您發佈答案,我會將其標記爲已接受。謝謝。 – Crayons

+0

請不要在Angular中使用基於jQuery的解決方案。這是一個非常糟糕的時尚。 –

回答

0

試試這個

<md-button class="md-raised md-default" ng-click="syncAccount($event, account.username)"> 
    <i class="fa {{ syncInProgress ? 'fa-spin' : 'fa-sync' }} "></i> Re-sync 
</md-button> 

在控制器

$scope.syncInProgress = false; 
$scope.syncAccount = function(index) { 
    $scope.syncInProgress = true; 
}; 

同步後請的syncInProgress值更改爲false

+0

謝謝,但是按鈕位於ng-repeat指令內,因此在一個視圖中存在很多按鈕。我相信這會通過使用單個布爾變量'$ scope.syncInProgress'導致衝突。 – Crayons

相關問題