我的角度控制器包含由Google Maps api更新的名为的阵列。
function MyCtrl($scope) {
var items = [
"arizona", "texas"
];
$scope.places = items;
}
我已将项数组绑定到名为 places 的范围变量。 Google Maps API会隐式更改项目,但更改不会显示在视图页面中。
<div ng-controller="MyCtrl">
<p>{{places.length}}</p>
</div>
如果我在 $ cope.places 中添加或删除项目,则会更新。但是如果我在项目数组中添加项目,则不会更新。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
将商品设为$ scope变量,或投放商品,只需让Google Maps API更新$ scope.places
答案 1 :(得分:0)
我可能过于简单化了,但Angular基本上会对变化进行民意调查。它以一种有助于提高性能的智能方式实现,但如果在Angular范围之外更改了值,则Angular不会立即意识到它们。
基本上,只要Angular执行任何代码(例如ng-click
事件),它就会在代码执行后检查更改。如果Google Maps API正在更改数据,那么在再次检查之前,Angular不会发现这些更改。
最好的解决方案是让Angular知道这些更改何时发生(希望Google API有一个钩子),这通常是通过调用$scope.$apply()
来完成的,如果没有,你可以随时使用Angular&#39 ; s $interval
服务偶尔运行一个方法,该方法不需要实际执行任何操作,但在运行后,Angular将检查更改。