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;
}

我一直试图避免发布问题,但我似乎无法弄清楚这个问题。好像我的参考无效

4

2 回答 2

2

一个问题是在您的 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)}">

还要通过调试方法来验证该方法是否正在处理您的对象而不是作用域实例setActiveisActive

于 2013-08-20T03:26:07.043 回答
1

问题出在this关键字上。this无法从模板中通过。

不要引用元素,而是退后一步并引用转发器中的基础项目。尝试更改thisobj(您的对象ng-repeat="obj in currentObject"

ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}
于 2013-08-20T03:25:49.287 回答