簡體   English   中英

角度控制器指令范圍

[英]Angular Controller Directive Scope

在過去的幾個小時中,我一直在努力解決以下問題,我不知道如何解決。 我正在做一個使用angular-openlayers-directive指令的角度應用程序。 $ scope.center對象包含最初在地圖上查看的位置。 以下代碼是查看地圖的頁面控制器的第一行。 這一切都很好。

angular.extend($scope, {
    center: {
        lat: 0,
        lon: 0,
        zoom: 1,
        autodiscover: true
    },
    layers: {
        normal: {
            type: 'Tile',
            source: {
                type: 'OSM'
            }
        }
    }
});

但是,現在我正嘗試使用從Google地理編碼api獲取的位置更新中心對象。 單擊一行google api結果的結果會在控制器中調用以下函數:

$scope.gotoLocation = function(lat, lon) {
    $log.log("called");
    $scope.center = {
        lat: 50,
        lon: 50,
        zoom: 0
    }
}

在我的控制台中,出現了字符串“被叫”的日志,但是地圖的視圖沒有改變。 同樣,當我在函數中打印$ scope.center時,會打印上面設置的原始對象,而該對象已更改為我當前的經緯度,因為autodiscover選項設置為true。 我已經用以下代碼檢查了它:

<openlayers ol-controls="controls" ol-center="center" ol-layers="layers" ol-markers="markers">
    <ol-marker ng-repeat="marker in markers" lat="marker.lat" lon="marker.lon"></ol-marker>
</openlayers>

<form>
    Latitude : <input type="number" step="any" ng-model="center.lat" />
    Longitude : <input type="number" step="any" ng-model="center.lon" />
    Zoom : <input type="number" step="any" ng-model="center.zoom" />
</form>

所有3個字段都顯示我當前的經度和緯度,並且當我更改字段時,地圖位置也會更新(!)。 我不知道為什么從模板本身更改模型確實起作用而從控制器更改模型卻不起作用。 誰能幫我這個?

鏈接到指令: https : //github.com/tombatossals/angular-openlayers-directive/blob/master/dist/angular-openlayers-directive.js

看來您的自動發現變量已刪除。 這與自動更新有關嗎?

嘗試更改gotoLocation函數以更新屬性,而不是覆蓋對象:

$scope.gotoLocation = function(lat, lon) {
    $log.log("called");

    $scope.center.lat = 50;
    $scope.center.lon = 50;
    $scope.center.zoom = 0;

}

它與不同的范圍有關。 使用ng-view包含了我的地圖視圖。 我的搜索欄是使用ng-include包含的,因此它們的作用域不同。 我用工廠解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM