通过ng-click函数调用服务
问题描述:
我有一个名为depotSvc的工厂服务。我将它添加到控制器的范围中。当我直接从控制器访问它时,没有任何问题 - 它将“foo”记录到控制台。当我通过ng-click函数调用它时,它不会将“foo”记录到控制台。在ng-click函数中调用服务有没有窍门?通过ng-click函数调用服务
HTML
<button id="a" type="button" ng-click="getAreaData(depotCode, a)">
JS
$scope.depotSvc = depotSvc;
$scope.getAreaData = function(depotCode, depotArea) {
$state.go("depot", {depotCode : depotCode, depotArea : depotArea });
depotSvc.getDepotVehiclesFlatArray(depotCode, depotArea).then(function(data){
console.log("foo")
})
};
答
有没有窍门,从NG-点击函数中调用服务?
没有技巧,你可以访问你暴露给范围(或控制器实例,如果controllerAs
语法的情况下)的一切。所以如果你需要你的服务在Angular表达式中以HTML格式提供,你需要将它分配给某个范围属性。例如:
$scope.depotSvc = depotSvc;
答
问题出在我的服务。我有一个jsonp请求调用测试数据,我有一个虚拟包装 - 总是由angular_0({})包装。 JSONp会失败,大概b/c它期望有不同的包装,即angular_1({})...我想。感谢您的回复。我将其更改为获取请求,并在本地托管我的数据以进行测试 - 现在没有问题。
这似乎是我的服务后续问题。感谢您的帮助。 – user1824797
请注意,从模板调用异步方法可能没有那么有用(因为您无法定义回调函数)。例如在你的情况下,'ng-click =“depotSvc.getDepotVehiclesFlatArray(depotCode,depotArea)'不是很有用。同步方法很好。 – dfsq