我有两张图片,您必须选择其中一张,并且类会根据您使用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;
}
我一直试图避免发布一个问题,但我似乎无法想出这个问题。这就像我的参考无效
答案 0 :(得分: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)}">
通过调试方法,验证方法setActive
和isActive
是否正在处理对象而不是作用域实例。
答案 1 :(得分:1)
问题在于this
关键字。 this
无法从模板中传递。
不是引用元素,而是退后一步并引用转发器中的基础项。尝试将this
更改为obj
(ng-repeat="obj in currentObject"
中的对象)
ng-click="setActive(obj)" ng-class="{itemSelected : isActive(obj)}