使用Controller代替ng-map marker指令的$ scope

时间:2016-12-05 20:11:47

标签: angularjs google-maps google-maps-api-3 angularjs-google-maps

我正在使用angularjs google maps。我试图弄清楚如何从控制器利用viewModel实例(this)而不是$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

0 个答案:

没有答案