首页 > 解决方案 > 无法在 Angular JS 中设置未定义的属性“$scope 变量”

问题描述

尝试将一个变量复制到另一个变量时遇到错误

var app = angular.module('myApp', []);
  app.controller('myCtrl', function($scope, $http) {
    $scope.myWelcome = "Welcome"
    var vm = this,
        parent = $scope.summary,
        results = $scope.results,
        matches = {
            "value":"John"
        };
    parent.def = angular.copy(matches);
    $scope.myWelcome =  parent.def;
});

//遇到这个错误,请高人指点:

   TypeError: Cannot set property 'def' of undefined
    at Object.<anonymous> (<anonymous>:11:14)
    at Object.invoke (angular.js:5106)
    at O.instance (angular.js:11076)
    at p (angular.js:9939)
    at f (angular.js:9248)
    at angular.js:9113
    at angular.js:1960
    at m.$eval (angular.js:18542)

标签: angularjsangularjs-scopeangularjs-controller

解决方案


在这一行中:parent.def = angular.copy(matches);,parent等于$scope.summary

所以你正在尝试做相当于$scope.summary.def = angular.copy(matches). 由于$scope.summary未定义,因此引发错误。

您可以通过将$scope.summaryfirst 定义为空对象来修复它:$scope.summary = {}.


推荐阅读