0

我正在尝试,$watch myMap但它永远不会触发。我已经把它缩小到使用过ui-if(如果我删除了 ui-if,$scope.myMap是正确的谷歌地图对象)。但是我需要保留 ui-if 以便ui-map等待我的 AJAX/Db 查询完成。

为什么 myMap 没有被添加到范围中(以及如何获得它)?

普朗克

编辑我从这个 GitHub 问题中看到 ui-if 创建了自己的范围。那么我如何访问它的范围/myMap现在住在哪里?另外,为什么 ui-if 创建一个新的范围?

4

2 回答 2

2

您可以指定要存储对象的位置,包括父范围:

ui-map="$parent.myMap"

尽管这被认为是半不可靠的(因为任何数量的指令都可能创建额外的范围层)并且您可能需要考虑将其设置为对象的属性。

于 2013-01-31T01:17:28.010 回答
2

GoogleMaps在控制器上创建模型:

$scope.model = {};

ui-map将模型作为对指令的引用传递:

ui-map="model.myMap"

注意变化:

$scope.$watch('model.myMap', function(map){
    ...
}

这样可以避免在范围myMap内创建属性ui-if

另请查看此文档以获取有关范围原型继承的更多信息。

于 2013-01-31T01:50:39.033 回答