2013-07-14 3 views
0

Я показываю данные в сетке, при нажатии активной или неактивной кнопки мне нужно изменить кнопку, функциональность работает нормально, для изменения значка я не могу найти кнопку с активным нажатием в JQuery мы можем использовать «это», но ни одна идея в угловых JS, пожалуйста не поможет

$scope.activeSource = function(datasource,status) 
       { 

         $scope.loading = true; 
         $scope.activeInfo = { 
           datasource:datasource, 
         }; 
         $scope.alerts = []; 
         if(status == "Stopped") 
         { 
          $scope.entityService.activeInfo($scope.activeInfo, 
          function(msg) // success 
          { 
           $scope.loading = false; 
           $rootScope.successMsg.push(msg); 
           $('.icon-play').hide(); // this. 
           $('.icon-stop').show(); // this. no idea 

          }, 
          function(msg) // error 
          { 
           $scope.loading = false; 
           $rootScope.successMsg.push(msg); 
          } 
         ); 
+0

Вы используете ng-click ?? Или как вы устанавливаете этот обработчик кликов на этих кнопках? – Krab

+0

Да, я использую ng-click, его внутри ng-grid ng-click = "activeSource (row.entity.dataSource) – Prashobh

ответ

3

Вам не нужно использовать this для доступа к кнопке. Вместо этого в вашем контроллере создайте объект javascript, который содержит все атрибуты кнопки. Что-то вроде этого:

$scope.myButton = { 
    src : 'foobar.png', 
    isVisible : true 
}; 

Затем определите кнопку, как это:

<img ng-src="myButton.src" ng-show="myButton.isVisible" /> 

Теперь, когда вы хотите изменить любой атрибут кнопки, вам просто нужно изменить JavaScript Object myButton и угловой будет заботиться об обновлении фактической кнопки.

Например, если вы хотите скрыть кнопку:

// you don't need to do this 
// $('#myButton').hide(); 

// instead just do this 
$scope.myButton.isVisible = false; 

Кроме того, вы можете изменить СРК изображения, а также.

+0

, если у него 1000 таких кнопок? – Krab

+1

Тогда ему, вероятно, стоит подумать о перепроектировании его пользовательского интерфейса. к вашему мучительному вопросу, он может ожидать замедления в пользовательском интерфейсе. Google, сами, признают, что Angular будет испытывать замедление, когда вы приближаетесь к 1000 привязкам. Если вы ожидаете этих многих привязок, то Angular не является правильным выбором Возможно, вам стоит подумать над чем-то вроде Backbone, который не запускает цикл дайджеста. – xbonez

Смежные вопросы