1

JSON にデータを格納するために AngularJS を使用しており、ページ アイテムに表示されるフィルターを適用したいと考えています。各項目には、プロパティとして国コードが含まれています。

[
 {
  "id": "1",
  "code": "us"
 },
 {
  "id": "2",
  "code": "ca"
 }
]    

Jquery VMap を使用してアイテムをフィルター処理したいと考えています。リージョンをクリックすると、アイテムのリストがフィルタリングされます。単純な「入力」フィールドを使用すると、リストがフィルタリングされます。しかし、郡をクリックしたときに実行される次のコードを使用すると、何も起こりません。

onRegionClick: function(element, code, region)
 {
  document.getElementById("query").value = code;
  function updateQuery($scope) {
   $scope.query = code;
   $scope.$digest();
  }
 }

「クエリ」の変更についてAngularに認識させるにはどうすればよいですか、それともより良い解決策がありますか? フィドルへのリンク: http://jsfiddle.net/47RLz/4/

4

1 に答える 1

2

これを試して:

onRegionClick: function(element, code, region)
 {
    var e = document.getElementById("query");
    var scope = $(e).scope();
    scope.$apply(function() {
        scope.query = code;
    });

 },

説明

scope()angular では、jQuery 要素を呼び出すことで、任意の要素のスコープを取得できます。スコープを取得すると、スコープcodeのクエリ変数に割り当てられます。

クリック ハンドラーは角度コンテキストの外で実行されるため、割り当ては $apply ブロックにラップされ、$digest サイクルをトリガーしてビューを更新します。

デモフィドル

于 2014-07-06T08:39:06.270 に答える