2016-08-03 28 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而不是contacthttp://fiddle.jshell.net/o6a54Lw5/1/

一個小提琴,它拋出contact而不是namehttp://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

,因爲它代表window.name因爲,

window.name獲取/設置窗口的名稱,不要爲一個全局變量給予名稱name

出於這個原因,它從來沒有不確定的,所以$scope將接受它