在值更改时查看不更新

时间:2018-02-27 11:49:31

标签: angularjs leaflet

我正在使用angularjs 1.6,传单和mapbox。我正在尝试重新创建一个框,其值根据您以angularjs方式悬停在哪个多边形上而变化。我想重新创建的行为就是在这个例子中 http://leafletjs.com/examples/choropleth/

您可以看到地图右上角框中的值会根据您悬停在哪个多边形上而发生变化。当我尝试以角度方式重新创建它时,视图不会更新,但我可以看到组件更新中的值。

HTML:

 <div class="data">{{vm.polygonValue}}</div>

控制器(与示例中的突出显示功能相同):

 function highlightFeature(e) {
    var layer = e.target;
    layer.setStyle({
     weight: 3,
     color: '#666',
     fillOpacity: 0.5
  });

  if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
    layer.bringToFront();
  }

   addValue(layer.feature.properties);
  }


function addValue(props){
   vm.polygonValue = props.value;
 }

所有在控制器中运行,当您将鼠标悬停在多边形上但视图不会更改时,我可以看到vm.polygonValue更改。有人可以帮忙吗?想知道是因为价值变化太频繁还是某些东西而且角度无法处理呢?

1 个答案:

答案 0 :(得分:1)

可能您的功能是在角度摘要周期之外触发,以通知角度在$scope.$apply函数内执行它所需的更改。

$scope.$apply(() => addValue(layer.feature.properties))这样的东西应该有效。您可以在文档中找到有关$ apply的更多信息:https://code.angularjs.org/1.6.9/docs/api/ng/type/$rootScope.Scope#$apply