나는 각도 $ 범위에 관한 여러 SO 응답을 읽고 그것이이 경우이기 때문에이 JS의 프로토 타입 상속 (What are the nuances of scope prototypal/prototypical inheritance in AngularJS?)Angular ngModel 예제에서 오류가 발생하지 않는 이유는 무엇입니까?
을 따르겠다 것을 의미 일반 오래된 자바 스크립트 객체, 얼마나, 나는 궁금하다 왜 내 예를 들어 다음은 오류가 발생하지 않습니다 :
프로토 타입 상속을 기반으로<!doctype html>
<html ng-app='MyApp'>
<head>
<meta charset='utf-8'>
<title>Egghead</title>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js'></script>
<script>
var app = angular.module('MyApp', []);
app.controller('MainCtrl', ['$scope', function ($scope) {
}])
</script>
</head>
<body>
<div ng-controller='MainCtrl'>
<input type='text' ng-model='data.message'>
<p>{{ data.message }}</p>
</div>
</body>
</html>
, 여기에 내가 일이 기대하는 내용은 다음과 같습니다
- MainCtrl가 호출 될 때, MainCtrl 달러 (A $) 범위 객체를 생성합니다 및 해당보기.
- 입력란에 입력 할 때마다 일부 문자열을 $ scope.data.message에 바인딩합니다.
- 그러나 이렇게하려면 JavaScript의 첫 번째 단계는 $ scope.data를 확인하는 것입니다.
- MainCtrl 함수에는 데이터 속성이 없으므로 rootScope에서 데이터 속성을 찾으려고 시도합니다.
- rootscope에는 데이터 속성이 없으므로 $ scope.data가 'undefined'로 확인되어야합니다.
- 마지막으로 undefined.message에 할당하려고하면 오류가 발생합니다.
그러나 코드는 행복하게 작동하며 데이터는 올바르게 바인딩됩니다. 왜 누군가가 나를 위해 오류를 던지지 않는지 이해할 수 있습니까?
주석으로이 떠난다. 내가 읽은 것부터 오류를 던질 때까지 말이다. undefined.message에 할당하려고 시도하는 대신 오류가 발생하여 각도가 정의되지 않았 음을 감지하고 범위에서 해당 각도를 만든 다음 값을 할당합니다. –