稍后在角度中引用元素

Reference an element later in angular

本文关键字:引用 元素      更新时间:2023-09-26

我有两个图像,您必须选择其中一个,并且类会根据您使用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-repeatng-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。CCD_ 8将指代CCD_ 9的当前作用域对象。

假设你在一个数组上迭代,你能改变这行吗

<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是否在对象而不是作用域实例上工作。

问题出在this关键字上。this不可从模板传递。

与其引用元素,不如后退一步,引用中继器中的基础项。尝试将this更改为objng-repeat="obj in currentObject"中的对象)

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