如何在 Angular 控制器中调用 API



我遇到了角度JS控制器功能的问题。我有一个控制器,在该控制器中,我有一堆函数,这些函数是从包含HTTP get和post请求的服务调用的

具体来说,当我尝试编写时,我的问题是在控制器内部:

$scope.functionName = function()
{
    //some code
} 

我的函数根本没有被调用。当我执行以下操作时,我的函数被调用,但其余函数的范围未定义。

app.controller("ControllerName", function ($scope, ServiceName) {
    getAll();
    getAppKey();
    getAppDefaults();
    function getAll(){//some code}
    function getAppKey(){//some code}
    function AppDefaults(){//some code
})

不确定我哪里出错了。我非常感谢任何可以帮助我解决这个问题的人的帮助。

我认为您正在用$scope定义函数并在没有$scope的情况下调用函数。此代码将起作用:

app.controller("ControllerName", function ($scope, ServiceName) {
    $scope.getAll = function{
        console.log("function called");
    }
    $scope.getAll();
})

并且此代码将无法按预期工作:

app.controller("ControllerName", function ($scope, ServiceName) {
    $scope.getAll = function{
        console.log("function called");
    }
    getAll();
})

'...从服务调用的函数堆...' ?

不能从服务中的控制器调用函数。您可以做的是在控制器中使用服务中的函数。

如果你想使用控制器内部服务的方法,首先注入服务(你已经这样做了(,

然后称之为:

ServiceName.getAll((;ServiceName.getAppKey((;...等。

如果你想从控制器使用这个函数,

让另一个服务/工厂把这个函数放在那个服务中,在服务中注入service2,你可以再次使用它们,就像:

ServiceName2.getAll((;ServiceName2.getAppKey((;

我不确定你想说什么,梅比?此代码有效:

  app.controller('MainCtrl', function($scope) {
  $scope.submit = function() {
    alert("called.........");
  }
  defaultFunction = function() {
    alert("defaultFunction called.........");
  }
  defaultFunction();
});

$scope 当您想在视图中使用时添加,如果需要在控制器中使用它,则无需$scope

您可以更改 http://jsfiddle.net/B9RsQ/45/进行测试

最新更新