[英]Reference an element later in angular
我有兩個圖像,您必須選擇其中一個,並且類會根據您使用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;
}
我一直試圖避免發布一個問題,但我似乎無法想出這個問題。 這就像我的參考無效
一個問題是你在html模板中看到的是在多種方法中使用this
。 this
將引用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)}">
還要通過調試方法驗證方法setActive
和isActive
是否正在處理對象而不是作用域實例。
問題出在this
關鍵字上。 this
不能從模板傳遞。
而不是引用元素,退后一步並引用轉發器中的基礎項。 嘗試改變this
到obj
(在你的對象ng-repeat="obj in currentObject"
)
ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.