2017-04-10 1 views
0

내가 사용하고 각도 1. I가 다음과 같은 마크 업 : 다음함수의 각도 바인딩?

$scope.myobj = { 
    value: false 
}; 

그리고 내 기능 : 나는 다음과 같은 개체가 내 컨트롤러에서 선언 한

ng-mouseover="myFunction(myobj.value)" ng-show="myobj.value" 

$scope.myFunction = function(obj) { 
    obj = true; 
    console.log($scope.myobj); 
} 

요소 위로 마우스를 가져 가면 $ scope.myobj.value를 true로 설정하려고하지만 실제로 그렇지는 않습니다. 그것은 그것을 correcty 바인딩하는 것 그래서 그것이 그것을 개체를 선택하지만 그것은 $ 범위 하나를 참조하지 않습니다. $ scope를 올바르게 설정하도록 어떻게해야합니까?

+0

함수에서 객체를 직접 전달할 수 있습니다. 동일한 답변을 참조하십시오. –

답변

0

대신 이렇게 :

$scope.myFunction = function(obj) { // passed value false; 
    $scope.myobj.value = !obj; // !false === true 
    console.log($scope.myobj); // outputs { value : true } 
}; 

당신이 무슨 짓을?

obj = true;이 코드는 부울 값이 true 인 전역 객체를 선언하며 사용자 코드에는 아무런 영향을 미치지 않습니다. 대신 !obj과 같이 메서드에서 반대 값이 전달 된 값으로 $scope.myobj을 업데이트해야합니다.

+0

'$ scope.myobj' 및'$ scope에 영향을 미치는 두 번의 마우스 오버가있을 때와 같이 전달할 값은 무엇입니까? 다른 '? – George

+0

그렇다면 OP는 격리 된 범위에 있어야합니다. – Jai

+0

대신에'function (obj) {obj.value = true}'내부 – Srigar

0

당신이 당신의 함수에 값 유형을 전달하는대로 범위 개체가 잘못 설정하려고하는 방법,

전 대한

: myobj.value의 값이 true이면/false..you가 simpling된다 이 변수의 참조가 아닌이 값을 전달합니다.

당신은

$scope.myFunction = function(obj) { 
    $scope.myobj = true; 
    console.log($scope.myobj); 
} 

또는

그냥

ng-mouseover="myFunction(myobj)" ng-show="myobj.value" 

다음이 값을 당신이

아래와 같이 설정하는 방법을 설정 아래와 같이 myObj로 전달 아래에 같은 값을 설정해야합니다
$scope.myFunction = function(obj) { 
    obj.value = true; 
    console.log($scope.myobj); 
}