4

angularディレクティブを使用して「リーフレットマーカー」を作成しようとしています。設計上の目的で、プレゼンテーションとモデルを分離して、さまざまな人がアプリケーションのさまざまな部分で作業できるようにします。私の問題は、「リーフレット」の問題よりも「範囲」の問題である可能性が高いです。コントローラーで「$scope」にマーカーを追加しているときに、角度ディレクティブで使用するオブジェクトを渡そうとしています。このアプリのディレクティブ "" は、マップに表示される各マーカー オブジェクトの "message" プロパティの唯一のタグです。ポルトガル語で「駅」と同じ「estacao」という属性があります。

だから、私のコードはここにあります:

        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」が null であることです。

何が起こっているのかを理解するのを手伝ってくれる人はいますか?

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 に答える