1

我使用 AngularJS 以 JSON 格式存储数据,并希望过滤显示在页面项目上的内容。每个项目都包含国家代码作为属性:

[
 {
  "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 回答