Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng单击更新模型不重置ng src_Angularjs - Fatal编程技术网

Angularjs ng单击更新模型不重置ng src

Angularjs ng单击更新模型不重置ng src,angularjs,Angularjs,我有一个ng重复,将显示四个图像。 单击其中任何一个,我必须更改特定图像,并将另一个图像重置为其以前的图像。我的angularJs代码如下 <div class='col-lg-3 col-md-3 col-xs-6 col-sm-6 noPaddingLeftRight' ng-repeat="category in categoryList"> <img ng-click="selectedCategory = category.Category_Id; selec

我有一个ng重复,将显示四个图像。 单击其中任何一个,我必须更改特定图像,并将另一个图像重置为其以前的图像。我的angularJs代码如下

<div class='col-lg-3 col-md-3 col-xs-6 col-sm-6 noPaddingLeftRight' ng-repeat="category in categoryList">
    <img ng-click="selectedCategory = category.Category_Id; selectedNo = category.RunningNumber;" ng-src="{{$index == selectedNo?category.HoverImageName:category.CategoryImage}}" alt='home' style='align-content: center; margin-top: 10px;' />
</div>

单击后,它将更改特定的图像,但不会重置以前的图像。
我做错了什么?

你把路弄得太难了。为什么需要两个变量来记住选择的类别?为什么将
selectedNo
设置为
category.RunningNumber
,然后将其与
$index
进行比较。如果它应该是一个索引,那么将它设置为索引。如果它应该是类别的运行编号,则将其与运行编号进行比较

另外,您正在修改作用域的一个变量,但ng repeat有自己的作用域。因此,每个迭代都有自己的selectedCategory和selectedNo

因此,在控制器中创建一个对象:

$scope.model = {
  selectedCategory: null
};
然后你所需要的就是

<div ng-repeat="category in categoryList">
    <img ng-click="model.selectedCategory = category" 
         ng-src="{{ model.selectedCategory == category ? category.HoverImageName : category.CategoryImage }}" />
</div>

或委托给某个函数:

$scope.selectedCategory = null;
$scope.selectCategory = function(category) {
  $scope.selectedCategory = category;
};

<div ng-repeat="category in categoryList">
    <img ng-click="selectCategory(category)" 
         ng-src="{{ selectedCategory == category ? category.HoverImageName : category.CategoryImage }}" />
</div>
$scope.selectedCategory=null;
$scope.selectCategory=功能(类别){
$scope.selectedCategory=类别;
};

能否尝试从ng src中删除{{}?图像路径直接如下所示/$index%20==%20selectedNo?category.HoverImageName:category.CategoryImageI我建议您从ng click调用一个方法。为ng src放置一个变量,并编写代码来确定method.excellent中的url。成功了。我没有意识到ng repeat有它自己的范围。塔克斯。