2013-08-19 37 views
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; 
} 

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

回答

1

问题是与this关键字。 this无法通过模板传递。

而不是引用元素,退后一步并引用中继器中的基础项目。尝试(在你ng-repeat="obj in currentObject"对象)改变thisobj

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

这样做,谢谢 – Ronnie

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是你的对象,而不是范围实例上的工作,通过调试该方法。

+0

感谢您的评论。我把这个勾号给了那个先回答的人。我有一种感觉,你们都在同一时间回答它,无论你的解决方案是否工作;) – Ronnie

相关问题