Angular Google Maps - 地图控件中的双向数据绑定

时间:2016-03-15 13:12:45

标签: javascript angularjs google-maps angular-google-maps

我在使用Angular的双向数据绑定表达式制作地图控制器时遇到了麻烦:

<script type="text/ng-template" id="control.tpl.html">
    <button class="btn btn-sm btn-primary" ng-class="{'btn-warning': danger}" ng-click="controlClick()"><h1>{{controlText}}</h1></button>
</script>

<ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" options="options">
    <ui-gmap-map-control template="control.tpl.html" position="center" controller="controlCtrl" index="-1"></ui-gmap-map-control>
</ui-gmap-google-map>

<div ng-controller="controlCtrl">
    <h1>{{controlText}}</h1>
    <label>Two-way Data Binding:</label>
    <input ng-model="controlText">
</div>

这是我的问题Plunker

有没有办法在地图控件中更改绑定属性?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

为了更改map-control中的bound属性:

1)为模板引入一个单独的控制器,以与另一个控制器共享其范围:

<script type="text/ng-template" id="control.tpl.html">
    <div ng-controller="templateCtrl">
       <button class="btn btn-sm btn-primary" ng-class="{'btn-warning': danger}" ng-click="controlClick()"><h1>{{controlText}}</h1></button>
    </div>   
</script>   

2)广播变化:

$scope.$watch('controlText', function () {
         $rootScope.$broadcast('controlText:changed', $scope.controlText);
});

3)接收模板控制器中的更改:

.controller('templateCtrl', function ($scope) {
    $scope.$on('controlText:changed', function(event, val) {
       $scope.controlText = val;
    }); 
})     

Plunker