Angularjs 확인란 홀수 행동
-
21-12-2019 - |
문제
일부 친구들과 나는 프로젝트에서 일하고 있습니다. 이것은 Angularjs와 함께 일하고있는 두 번째 프로젝트가 현재 버전 1.2.3을 사용하고있었습니다.
때때로 나는 그 행동 중 일부를 홀수로 발견하고 왜 무언가가 일어나고 있는지 이해하지 못한다.
상황은 이것입니다 ... 나는 CSHTML 파일에 FowlowIG :
<div class="checkbox">
<label>
<input name="somecheckbox" type="checkbox" ng-click="click()" ng-model="displayRegardlessOfSomething" />
<label>Display regardless of something</label>
</label>
</div>
<h1>{{displayRegardlessOfSomething}}</h1>
.
My JavaScript 파일에서는 지시문 내에 다음 코드가 있습니다.
맨 처음에 :
$scope.displayRegardlessOfSomething = true;
.
과 나는 다음을 가지고있다 :
$scope.click = function () {
console.log($scope.displayRegardlessOfSomething)
}
.
및 확인란을 확인하거나 선택 취소 할 때마다 나는 항상 true ... 그러나 특이한 부분은 <h1></h1>
태그 내의 콘텐츠가 변경된다는 것입니다 .... 따라서 HTML 계층에서 변수의 값을 변경하지만 JavaScript 레이어에는 변경되지 않고 ...
이런 일이 일어나는 이유는 무엇입니까?
$ parent.displayregardlessofsofsomething을 사용하여 문제를 해결했으나 이유를 고정시키는 이유를 이해하지 못합니다 ... 처음에는 문제가 발생 했습니까?
해결책
나는 당신이 바이올린에서 한 일을 시도했고, 그것은 나에게 잘 작동합니다.
http://jsfiddle.net/nicolasmoise/x9kyu/1///a> $parent
를 사용했을 때 사용자를 위해 작동한다는 사실은 부모 컨트롤러가 여기에 오류에 있다고 생각하게됩니다.같은 이름의 두 가지 변수가있을 수 있습니까?
p.s.: JavaScript에서는 프리미티브가 값으로 전달되며 객체는 참조로 전달됩니다.이것은 각 개발자들에게 많은 실수의 원인입니다.내 요점을 보여주는이 바이올린을보십시오.
primitives : http://jsfiddle.net/nicolasmoise/x9kyu//A>
다른 팁
모든 것이 동일한 범위에 살고있는 것으로 확신하지 않는 한, 거의 결코 는 항상 NG-Model 표현식 어딘가에 점이 있어야합니다.
myApp.controller('MyController2', function($scope) {
$scope.model = { displayRegardlessOfSomething: true };
$scope.click = function() {
console.log($scope.model.displayRegardlessOfSomething);
};
});
<input type="checkbox"
ng-click="click()"
ng-model="model.displayRegardlessOfSomething" />
.