문제

일부 친구들과 나는 프로젝트에서 일하고 있습니다. 이것은 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>

객체 : http://jsfiddle.net/nicolasmoise/x9kyu/2/2/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" />
.

Live Demo에 대한 자세한 내용은이 플러스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top