2013-08-19 33 views
1

我有兩個圖像,您必須選擇一個或另一個,並且類別根據您使用ng-click選擇的內容而變化。在繼續下一步,我做什麼只是選擇的對象和存儲引用:稍後以角度引用元素

$scope.cabinetDetails.cabinetType = { 
    name: $scope.currentElement.obj.name, 
    image: $scope.currentElement.obj.image, 
    ref: $scope.currentElement 
}; 

$scope.currentElement是什麼形象我選擇,我會想,我可以通過日後訪問:$scope.cabinetDetails.cabinetType.ref

假設我在第二步,我想對第一步進行更改。我點擊我的麪包屑返回,我再次看到第一步(這工作正常)。 我想要發生的是班級更改爲選定狀態。

在加載步驟之一,我這樣做:

if ($scope.cabinetDetails.cabinetType != null) 
{ 
    $scope.currentElement = $scope.cabinetDetails.cabinetType.ref; 
} 

我想這將預選的圖像我收到,因爲我ng-repeat做了簡單的檢查在ng-class部分:

<div ng-repeat="obj in currentObject"> 
    <div class="img-select" ng-click="setActive(this)" ng-class="{itemSelected : isActive(this)}"> 
     <div align="center"> 
     <img ng-src="resources/images/aventos/{{obj.image}}" /> 
     </div> 
     <div class="img-title">{{obj.name}}</div> 
    </div> 
</div> 

isActive()功能也相當簡單:

$scope.isActive = function(element) 
{ 
    return $scope.currentElement === element; 
} 

我一直在試圖避免發佈一個問題,但我似乎無法找出這一個。這就像我的參考無效

回答

1

問題是與this關鍵字。 this無法通過模板傳遞。

而不是引用元素,退後一步並引用中繼器中的基礎項目。嘗試(在你ng-repeat="obj in currentObject"對象)改變thisobj

ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)} 
+0

這樣做,謝謝 – Ronnie

2

的一個問題是看到你的HTML模板是在多個方法使用的thisthis將引用ng-repeat的當前範圍對象。

假設你迭代一個數組,你可以改變這一行

<div class="img-select" ng-click="setActive(this)" ng-class="{itemSelected : isActive(this)}"> 

<div class="img-select" ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}"> 

還要驗證方法setActiveisActive是你的對象,而不是範圍實例上的工作,通過調試該方法。

+0

感謝您的評論。我把這個勾號給了那個先回答的人。我有一種感覺,你們都在同一時間回答它,無論你的解決方案是否工作;) – Ronnie

相關問題