2015-07-13 39 views
0

我有興趣更新ng-class上的特定對象,因爲我的視圖中包含許多對象,我希望將更新應用於循環中的特定對象。更新ng類上的特定對象

<div> 
      <div class="baseMap"> 
       <i ng-repeat="society in societyImage" 
        class="icon box" 
        ng-class="{ 'bigger': society.bigger }" 
        ng-style="{'background-image': 'url(' + society.imageUrl + '.png)', 'top':+ society.top, 'left':+ society.left}" 
         ng-click="showAlert($index)"></i> 

      </div> 

     </div> 

///按鈕點擊索引animateMapItem($ index);

我的JS功能

var self = $scope; 

    self.bigger = false; 
    self.lightTheme = false; 

    $scope.animateMapItem = function (index) { 

     //self.bigger = !self.bigger; 

     var listTitle = $scope.listItem[index].indicatorEn; 

     var _societyObj = []; 
     _societyObj = _.where($scope.societyImage, {'indicationEn':listTitle}); 

     $log.log(_societyObj); 

     _societyObj.bigger = true; 

    }; 

我的CSS

.baseMap .icon { 
     position: absolute; 
     background-size: 100% 100%; 
     width: 40px; 
     height: 40px; 
     display: block; 

    } 

.box { 
     -webkit-transition:all linear 0.5s; 
     transition:all linear 0.5s; 
    } 

    .box.bigger { 
     width: 60px; 
     height: 60px; 
    } 

現在它更新所有項目做大,在那裏,我要更新按鈕特定項目點擊

回答

1

_societyObj是本地對象,你不能在html中使用它的視圖部分。使其作爲作用域對象然後只有你可以使用它的HTML視圖部分。將視圖部分中使用的所有本地對象更改爲$ scope對象。否則,您的代碼不工作按你期望

但爲什麼???它沒有任何意義

$範圍只能在控制器和視圖部分 之間通信的$scope.animateMapItem功能始終返回true其雙向綁定

$scope.societyObj = []; 
$scope.societyObj.bigger = true; 

否則在函數的最後返回_societyObj應該是

$scope.animateMapItem = function (index) { 

     //self.bigger = !self.bigger; 

     var listTitle = $scope.listItem[index].indicatorEn; 

     var _societyObj = []; 
     _societyObj = _.where($scope.societyImage, {'indicationEn':listTitle}); 

     $log.log(_societyObj); 

     _societyObj.bigger = true; 

     return _societyObj.bigger; // it always return true it doesn't make any sense 

    }; 

在HTML

<div class="baseMap"> 
       <i ng-repeat="society in societyImage" 
        class="icon box" 
        ng-class="{ 'bigger': animateMapItem($index) }" 
        ng-style="{'background-image': 'url(' + society.imageUrl + '.png)', 'top':+ society.top, 'left':+ society.left}" 
         ng-click="showAlert($index)"></i> 

      </div> 
+0

我從_societyObj = _.findWhere($ scope.societyImage,{ 'indicationEn':LISTTITLE})實現它;從下劃線框架,返回相同的對象,但你的建議也是好的。 – user366584

相關問題