为动态创建的图像添加功能

时间:2017-02-02 19:22:51

标签: javascript angularjs

我正在使用AngularJS创建一个简单的搜索功能,允许您从中国十二生肖中输入动物的名字,并获得兼容动物的图像。我想扩展这个应用程序,以便点击其中一个动态创建的元素将显示相关的动物列表。

我的第一个想法是在所有图像元素上创建一个click事件监听器,但这不适用于angular。我真的很感激任何指导或帮助。

HTML

<div>
What Animal Are You?<input type="text" ng-model="animal"><input type="submit" ng-click="submit(animal)">
</div>

JS:

$scope.submit = function(submitAnimal){
$scope.disappear=false
$('.your-zodiac').empty()
$('.mortalEnemy').empty()
$('.friendsForever').empty()

$http.get('zodiac.json')
    .then(function(response) {
                var animalsData = response.data.animals
        function loopAnimals(arrayOfAnimals,element){
            for (var index in arrayOfAnimals){
                var animal = arrayOfAnimals[index]
                for (var loopAnimal in animalsData){
                    if(animalsData[loopAnimal].animal==animal){
                        var picture = animalsData[loopAnimal].picture
                        $(element).prepend("<img src='"+ picture +"' alt='"+animal+"'/>")
                        break
                    }
                }
            }
        }
        for (var loopAnimal in animalsData){
            if (animalsData[loopAnimal].animal==submitAnimal){ //compatibility test
                var picture = animalsData[loopAnimal].picture
                $('.your-zodiac').prepend("<img src='"+ picture +"' alt='"+submitAnimal+"'/>")
                var enemies = animalsData[loopAnimal].hate //hate array
                var friends = animalsData[loopAnimal].love
                loopAnimals(enemies,'.mortalEnemy')
                loopAnimals(friends,'.friendsForever')
                break;
            }
        }

    });

Plunkr:http://plnkr.co/edit/9GtvFt5Kbvn1Sb98AXrA?p=preview

1 个答案:

答案 0 :(得分:0)

我最终在动态图像的事件监听器上使用了jQuery:

$('#zodiac').on("click",'img',function(){
    var animal = $(this).attr('alt')
    $scope.submit(animal)
})