2016-08-03 2 views
7

Я использую следующий код в codepen и облицовочный этот вопрос, для conctact я получаю следующее сообщение об ошибкеНе определена ошибка для некоторых переменных в угловом?

Почему дают ошибку для контакта, а не для имени?

Как я могу это решить?

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) 

Здесь JS файл

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); 
}]); 

Вот HTML-файл, который я использую.

<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> 

Пожалуйста, ответьте на эти вопросы

  1. Почему провала попытки при контакте, а не в имени?
  2. Контакт - это числовые данные, что я должен присвоить ему значение по умолчанию?
+1

что вы получаете в контакте, которые вы назначаете '$ scope.contact'? –

ответ

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

Его ошибка метания для контакта, потому что не существует глобальный переменный контакта в вашем приложении, но если вы идете в консоль и имя типа .. есть глобальное переменное имя, которое равняется "" так это не вызывает ошибки.

Если вы замените $scope.name любой другой переменной, это приведет к ошибке. Его все потому, что имя глобально, равное пустой строке.

Сцена, где она выбрасывает age вместо contact. http://fiddle.jshell.net/o6a54Lw5/1/

Сцена, где она выбрасывает contact вместо name. http://fiddle.jshell.net/o6a54Lw5/2/

Во второй скрипкой, если вы идете в консоль и введите name, вы увидите его объявили global.

+0

Спасибо. и этот - контакт - это числовые данные, что я должен дать ему значение по умолчанию? –

+0

Вы можете дать что-либо в зависимости от потребности приложения, $ scope.contact = 0; или того, что когда-либо стоило бы сохранить его ... – Thalaivar

0

Вот вопрос,

$scope.contact = contact; 

вы не определили контакты и имя в любом месте.

Working APP

+0

Я еще не определил имя. –

+0

Пожалуйста, прочитайте вопрос еще раз и попробуйте ответить именно на то, что я спросил. –

+0

@AnkurMarwaha Проверьте пример приложения – Sajeetharan

2

Не дать имя как name для глобальной переменной, как это означает window.name потому,

window.name получает/устанавливает имя окна.

По этой причине, его никогда не определены и поэтому $scope примет его

Смежные вопросы