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