Search code examples
angularjsimageangularjs-ng-click

Load Initial Image to Page AngularJS


I have a list of names from the model that are listed on the page when the page loads. When i click the name, the corresponding image from the model appears on the page. Is there a way within this to load an initial image [0]when the page loads? This could be a random image or the first image in the model data set.

<!DOCTYPE html>
<html ng-app = "myApp"><head>
    <meta charset="UTF-8">
    <title>Cat Clicker</title>
    <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
    <link rel ="stylesheet" type "text/css" href ="clicker.css">

    <script type = "text/javascript" src="Libs/angular.js"></script>
    <script type = "text/javascript" src="js/CatClickerMe.js"></script>
<body>

<div ng-controller = "MainController as vm">

  <div ng-repeat = "cat in vm.options.catList">


    <h3 ng-click = "vm.selectCat(cat)">{{cat.name}}</h3>

    </div>
    <hr>


  <h3>{{vm.selectedCat.name}}</h3>



  <img ng-src ="{{vm.selectedCat.images}}">
  </div>

  </div>

</div>
</body>
</html>

JS

"use strict";


angular.module('myApp',[]);

angular.module('myApp').controller('MainController', function($scope) {
  var vm = this;

   vm.selectCat=selectCat;

vm.options = {

   catList:[

   {
    name:  'Fluffy',
    images: 'images/Fluffy.jpeg'
  },

  {
    name:  'Blacky',
    images: 'images/blacky.jpeg'
  },
  {
    name: 'Tabby',
    images: 'images/tabby.jpeg'
  },

  {
    name:  'Cleo',
    images: 'images/Cleo.jpeg'
  }
],
};

function selectCat(pos) {
  vm.selectedCat = pos;
};


});

Solution

  • Load first image by setting vm.selectedCat just below vm.options

    vm.selectedCat = vm.options.catList[0];
    

    Below is the jsfiddle link for your reference

    jsfiddle : https://jsfiddle.net/Lpaudwf8/21/