我有一个名为depotSvc的工厂服务。我将它添加到控制器的范围。当我直接从控制器访问它时,没有问题 - 它记录" foo"到控制台。当我从ng-click函数调用它时,它不会记录" foo"到控制台。从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")
})
};
答案 0 :(得分:4)
是否有从ng-click功能中调用服务的技巧?
没有技巧,您可以访问您向范围公开的所有内容(或controllerAs
语法时的控制器实例)。因此,如果您需要在Angular表达式中以HTML格式提供服务,则需要将其分配给某个范围属性。例如:
$scope.depotSvc = depotSvc;
答案 1 :(得分:0)
问题在于我的服务。我有一个jsonp请求调用测试数据,我有一个虚拟包装 - 总是由angular_0({})包装。 JSONp会失败,大概是b / c它需要一个不同的包装器,即angular_1({})......我想。谢谢你的回复。我将其更改为get请求并在本地托管我的数据以进行测试 - 现在没有问题。