0

我正在使用angularjs 谷歌地图。我试图弄清楚如何this从控制器中利用 viewModel 实例 () 而不是使用$scope.

假设我有一个简单的控制器:

app.controller("map", ["NgMap", "$scope", Callback])

function Callback(NgMap, $scope){
  this.center = [38.9072, -77.0369]
  $scope.click = function(){
    console.log("clicked!")
  }
}

还有我的html:

<div data-ng-controller="map as vm">
  <ng-map center="{{vm.center}}" zoom="10">
    <marker position="[38.9072, -77.0369]" on-click="click()"></div>
  </ng-map>
</div>

这工作正常,我可以看到标记并单击它并在我的控制台中查看结果。如果我想将其转换为利用 viewModel( vm) 并改为:

app.controller("map", ["NgMap", "$scope", Callback])

function Callback(NgMap){
  this.center = [38.9072, -77.0369]
  this.click = function(){
    console.log("clicked!")
  }
}

我已经独立尝试了几件事,但在这里它们一次列出:

<marker position="[38.9072, -77.0369]" data-ng-click="vm.click()"></div>
<marker position="[38.9072, -77.0369]" data-ng-click="vm.click"></div>
<marker position="[38.9072, -77.0369]" on-click="{{vm.click}}"></div>
<marker position="[38.9072, -77.0369]" on-click="{{vm.click()}}"></div>

有些抛出错误,有些则什么也没做。对此有什么想法吗?或者ng-map,特别是marker指令,是否要求您使用$scope.

4

0 回答 0