4

我正在尝试使用角度指令创建“传单标记”。出于设计目的,我们将演示文稿和模型分开,以便不同的人可以处理应用程序的不同部分。我的问题更有可能是“范围”问题而不是“传单”问题。我正在尝试传递要在 angular 指令中使用的对象,同时在控制器中的“$scope”上添加标记。在我的应用程序中,该指令“”是地图中要显示的每个标记对象上的“消息”属性中的唯一标记。它有一个属性“estacao”,在葡萄牙语中与“station”相同。

所以,我的代码在这里:

        angular.forEach($scope.estacoes, function(estacao) {
            $scope.markers.push({
                lat: estacao.latitude, 
                lng: estacao.longitude, 
                message: "<popup estacao='estacoes[" + i + "]'></popup>"
            });
            i++;
        });

http://plnkr.co/edit/evaQpqGZUz39Y7MNqbo7?p=preview

问题接缝是在处理指令时我的“estacao”为空。

谁能帮我弄清楚发生了什么?

4

2 回答 2

2

弹出消息的“自动”编译(来自传单指令)使用根范围。因此,您需要将响应 estacoes 分配给根范围:

promiseEstacoes.then(function(estacoes) {
   $rootScope.estacoes = estacoes.estacoes;
   ...
}

http://plnkr.co/edit/OkQcth2zNrEdO2rgwBv8?p=preview

于 2014-12-18T09:39:21.987 回答
2

使用最新版本的 angular-leaflet-directive,您可以指定用于消息呈现的范围:

$scope.markers.push({
    lat: estacao.latitude, 
    lng: estacao.longitude,
    getMessageScope: function() { return $scope; }
    message: "<popup estacao='estacoes[" + i + "]'></popup>"
});
于 2015-01-14T02:39:21.493 回答