2016-09-20 16 views
2

$ watchを使用する際に問題があります。以下の関数から$ watchを使用すると、問題なく動作しています。しかし、それは影響しません。 。 私はあなたの提案をお待ちしております。..

$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をコールする必要があります。set watch後に$ 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としてコンパイルする必要がありますあなたが何か( "b")を監視しようとしているその時点で$ scopeを実行しようとすると、最初はコンパイルされません。あなたが何らかの操作を実行したいときや必要なときには時計が正しくない場合は、必要なときには常に「d」を監視する必要があるということですあなたは単に関数を書くことができますアプローチ

0

これを試してみてください。

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

答えを説明してください。 – BlackBeard

関連する問題