角度中的某些变量没有定义错误?

时间:2016-08-03 11:00:59

标签: javascript html angularjs

我在codepen中使用以下代码并面临此问题, 对于conctact我收到以下错误

为什么它会给出联系错误而不是名字?

我该如何解决这个问题?

.max()

这是js文件

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)

这是我正在使用的HTML文件。

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

请回答这些问题

  1. 为什么联系失败而不是名字?
  2. 联系人是号码数据,我应该给它什么默认值?

3 个答案:

答案 0 :(得分:4)

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

联系的抛出错误是因为你的应用程序中没有全局联系变量,但如果你去控制台并输入名称..有一个全局变量名等于""所以它不会抛出错误。

如果将$scope.name替换为任何其他变量,则会引发错误。它的全部是因为name是全局的,等于空字符串。

它引用age而不是contact的小提琴。 http://fiddle.jshell.net/o6a54Lw5/1/

它引用contact而不是name的小提琴。 http://fiddle.jshell.net/o6a54Lw5/2/

如果你去控制台并输入name,现在处于第二小提琴,你会看到它声明为global

答案 1 :(得分:2)

不要为全局变量指定名称name,因为它表示window.name,因为,

  

window.name获取/设置窗口的名称。

因此,它永远不会被定义,因此$scope会接受它

答案 2 :(得分:0)

这是问题,

 $scope.contact = contact;

您尚未在任何地方定义联系人和姓名。

Working APP