7

I am using the following code in codepen and facing this issue, for conctact i am getting the following error

Why is it giving error for contact and not for name?

How can i solve this ?

angular.js:13550 ReferenceError: contact is not defined
    at new <anonymous> (pen.js:8)
    at Object.invoke (angular.js:4665)
    at R.instance (angular.js:10115)
    at n (angular.js:9033)
    at g (angular.js:8397)
    at g (angular.js:8400)
    at angular.js:8277
    at angular.js:1751
    at n.$eval (angular.js:17229)
    at n.$apply (angular.js:17329)

Here is js file

var app = angular.module("crud", []);

app.controller("ctrl", ['$scope', function($scope) {
    $scope.data = [3, 4, 5, 34, 34];
    debugger;
    $scope.name = name;
    $scope.contact = contact;
    $scope.obj = {
        name: $scope.name,
        contact: $scope.contact
    };
    console.log($scope.obj);
}]);

Here is the HTML file that i am using.

<body ng-app="crud">
  <div ng-controller="ctrl">       
    <div>
      <table>
        <tr ng-repeat="x in data track by $index">
          <td>{{x}}</td>
          <td>{{$index}}</td>
        </tr> 
      </table>
    </div>
  </div>
</body>

PLEASE answer these questions

  1. Why is it failing at contact and not at name ?
  2. Contact is number data, what should i give the default value to it ?
1
  • 1
    what you are getting in contact that you are assigning to $scope.contact? Commented Aug 3, 2016 at 11:10

3 Answers 3

4
  $scope.name = name;
  $scope.contact = contact;

Its throwing error for contact is because there is no global contact variable in your app, but if you go to console and type name.. there is a global variable name which equals "" so it does not throw error.

If you replace $scope.name with any other variable, it would throw error for that. Its all because name is global which equals empty string.

A fiddle where it throws for age instead of contact. http://fiddle.jshell.net/o6a54Lw5/1/

A fiddle where it throws for contact instead of name. http://fiddle.jshell.net/o6a54Lw5/2/

Now in the second fiddle if you go to console and type name, you would see its declared global.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks. and this one -- Contact is number data, what should i give the default value to it ?
You can give anything depending your need of app, $scope.contact = 0; or what ever value you want to keep it...
2

Do not give name as name for a global variable as it denotes window.name because,

window.name gets/sets the name of the window.

For that reason, its never undefined and so the $scope will accept it

Comments

0

Here is the issue,

 $scope.contact = contact;

you have not defined contact and name anywhere.

Working APP

3 Comments

I have not defined name as well.
Please read the question again and try to answer exactly what i asked.
@AnkurMarwaha Check the sample app

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.