MehdiN
MehdiN

Reputation: 351

Use the value of a variable to find an item in array

I am still having trouble using the var to identify the object in the array. Here is what I have right now:

in controller:

$scope.allbooks=[
{book1={title:"Eat Pray Love", price:"$3.99"},
{book2={title:"DaVinci Code", price:"$7.99"}}
]

$scope.pick=function(name){
     $rootScope.choice = name;
}

in html template

<ion-item ng-click="pick(book1)">

{{allbooks.choice[0].title}} <----This does not work

Used an alert to make sure choice=book1 which it does...I don't know what I am doing wrong

PLEASE HELP :(

Upvotes: 1

Views: 48

Answers (2)

Azad
Azad

Reputation: 5272

in controller:

$scope.allbooks=[
  {book1:{title:"Eat Pray Love", price:"$3.99"}},
  {book2:{title:"DaVinci Code", price:"$7.99"}}
];

$scope.choice = {}; //a variable to store your choice

$scope.pick=function(name){
     $scope.choice = $scope.allbooks[name];  
}

in html template

<ion-item ng-click="pick('book1')"> <!-- pass book1 as string -->

{{choice.title}}


angular.module("app", [])
  .controller("main", function($scope) {

    $scope.allbooks = {
      book1: {
        title: "Eat Pray Love",
        price: "$3.99"
      },
      book2: {
        title: "DaVinci Code",
        price: "$7.99"
      }
    };

    $scope.choice = {}; //a variable to store your choice

    $scope.pick = function(name) {
      $scope.choice = $scope.allbooks[name];
    }

  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="main">

  <button ng-click="pick('book1')">Test</button>
  <!-- pass book1 as string -->

  {{choice.title}}

</div>

Upvotes: 1

Jordan Soltman
Jordan Soltman

Reputation: 3893

[
{book1={title:"Eat Pray Love", price:"$3.99"},
{book2={title:"DaVinci Code", price:"$7.99"}}
]

is not valid javascript. If you are trying to define an object literal you'll need to adjust your syntax a bit:

$scope.allbooks = [
    {title:"Eat Pray Love", price:"$3.99"},
    {title:"DaVinci Code", price:"$7.99"}
]

Now you can access each book:

$scope.allbooks[0]; // returns first book
$scope.allbooks[1]; // returns second book

Upvotes: 1

Related Questions