我正在使用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
.