点击img不在ng-repeat内部工作

时间:2017-09-22 19:37:47

标签: angularjs angularjs-ng-repeat angularjs-ng-click

在我看来,我有一个图标列表,点击后,应该从控制器调用一个函数。

查看

<div ng-controller="EditorController" class="main-div">
  <aside>
   <div ng-repeat="icon in EditorIcons">
     <img ng-click="changeme()"
     data-ng-src="{{icon.source}}"
     alt="{{icon.name}}"/>

   </div>
  </aside>
</div>

控制器

  app.controller('EditorController', function($scope) {
    $scope.EditorIcons = [ ... ];
    $scope.changeme = function() {
       console.log("changing");
    }
  }

我之前已经看到过这个问题,但我仍然无法在这里找到问题所在。我做错了什么?

更新 我发现了这个问题。我在旁边的元素

上有一个-1的z-index

2 个答案:

答案 0 :(得分:1)

假设EditorIcons是控制器中的集合,并且changeme是控制器内部的方法,则需要移除$parent

<div ng-repeat="icon in EditorIcons">
  <img ng-click="changeme()"
    ng-src="{{icon.source}}" alt="{{icon.name}}" />
</div>

在你的"定义

中,你遗漏了引号alt

答案 1 :(得分:1)

好的,我只是试着做一个小提琴,它工作正常: https://jsfiddle.net/pegla/8807dvrr/2/

<div ng-app>
  <div ng-controller="SomeCtrl">
    <aside>
      <div ng-repeat="icon in EditorIcons">
        <img ng-click="changeme()" data-ng-src="{{icon.source}}" alt="{{icon.name}}" />
      </div>
    </aside>
  </div>
</div>



 function SomeCtrl($scope) {

  $scope.EditorIcons = [{
    source: '',
    name: 'icon-1'
  }, {
    source: '',
    name: 'icon-2'
  }];
  $scope.changeme = function() {
    console.log("changing");
  }
};

所以你的问题必须在控制器或ng-app声明的某个地方,因为代码有效,同时检查编辑器图标中的数据是否正常。