稍后以角度引用元素

时间:2013-08-19 23:18:27

标签: javascript angularjs

我有两张图片,您必须选择其中一张,并且类会根据您使用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;
}

我一直试图避免发布一个问题,但我似乎无法想出这个问题。这就像我的参考无效

2 个答案:

答案 0 :(得分: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是否正在处理对象而不是作用域实例。

答案 1 :(得分:1)

问题在于this关键字。 this无法从模板中传递。

不是引用元素,而是退后一步并引用转发器中的基础项。尝试将this更改为objng-repeat="obj in currentObject"中的对象)

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