2016-09-20 8 views
2

$ watch를 사용할 때 문제가 있습니다. 아래 함수에서 $ watch를 사용하면 아무런 문제없이 작동합니다. 그러나 click 함수 내에서 사용하면 영향을 미치지 않습니다. . 나는 당신의 제안을 기다리고 ..

$scope.d = 1; 
    var mark = L.marker(L.latLng(veri.Konum.lat, veri.Konum.lon), { title: veri.Name, data: veri, content: "" }); 
mark.addTo(markersLayer); 
mark.on('click', onClick); 

function onClick(e) { 

    $scope.$watch("d", function() { 
     console.log("12313sadad"); 
    }); 
} 
+0

onClick 함수에서 시계를 연결하는 것이 이상합니다. 일반적으로 지시어 또는 적어도 컨트롤러에서 시계를 연결합니다. 성취하려는 것을 아는 것이 도움이 될 것입니다. –

+0

당신이 이루고자하는 것을 기대하고, 기대하고있는 것과 현재 무엇이 일어나고 있는지, 아니면 현재 일어나지 않고 있는지에 대한 훨씬 더 나은 설명이 필요합니다. [ask] – charlietfl

+0

컨트롤러 내부에서이 코드를 사용했습니다. 여기에 모든 코드를 쓰지 않았습니다. 잘못된 설명으로 죄송합니다. –

답변

4

을 당신은 어떤 각도 구성 요소에 의해 트리거되지 않은 함수로보고 넣어 AngularJS와 인식되지 않도록 당신의 내부에 무슨 짓을 그 기능.

일부 각도 구성 요소 (ng-click, ng-change ... 등)로 해당 함수를 트리거하거나 $ scope를 호출해야합니다. 설정 한 후에 $ apply()를 설정해야합니다.) 다른 대안이없는 경우 ... 그것을 할

+0

감사합니다. 지금 필요한대로 작동합니다. :) –

0

이 시도 :

function onClick(e) { 
    if(!$scope.isWatched) { 
     $scope.$watch("d", function() { 
      console.log("12313sadad"); 
      $scope.isWatched = true; 
     }); 
    } 
} 
-1

그것에 대해 prety 확실하지 않은이 메신저를 시도하지만 난 그것을

scope.$watch("d", function (data) { 
    console.log("data ", data); 
}) 
0

우선이 작동 같아요

$ 범위. $ 시계 필요할 때 실행될 부분이 아니며 지시문로드 또는 controlle로 컴파일해야합니다. r load 당신이 함수 내에서 그것을 쓰면 처음에 컴파일되지 않을 것이다. 함수를 호출 할 때마다 $ scope를 실행하려고한다. $ watch 당신이 뭔가를 ("b") 보려고 할 때 당신의 기대는 그것이다. 와드에서 지금은 그 변수를 지켜 볼 것입니다. 그러나 이것은 시계의 목적이 아닙니다. 여러분이 어떤 작업을하고 싶을 때 필요하다면 항상 "d"를 지켜야한다는 것입니다. 그러면 시계가 올바르지 않습니다. 접근 방식은 간단하게 함수를 쓸 수 있습니다

0

시도해보십시오.

$scope.$watch(function() { 
     return variableToWatch; 
    }, function(newVal, oldVal) { 
     if (newVal !== oldVal) { 
      //custom logic goes here...... 
     } 
    }, true); 
+0

답을 설명해주십시오. – BlackBeard

관련 문제