从ng-click功能呼叫服务

时间:2015-10-06 19:58:08

标签: javascript angularjs

我有一个名为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")
                })
            };

2 个答案:

答案 0 :(得分:4)

  

是否有从ng-click功能中调用服务的技巧?

没有技巧,您可以访问您向范围公开的所有内容(或controllerAs语法时的控制器实例)。因此,如果您需要在Angular表达式中以HTML格式提供服务,则需要将其分配给某个范围属性。例如:

$scope.depotSvc = depotSvc;

答案 1 :(得分:0)

问题在于我的服务。我有一个jsonp请求调用测试数据,我有一个虚拟包装 - 总是由angular_0({})包装。 JSONp会失败,大概是b / c它需要一个不同的包装器,即angular_1({})......我想。谢谢你的回复。我将其更改为get请求并在本地托管我的数据以进行测试 - 现在没有问题。