Angularjs 如何在Angular controller中调用API

Angularjs 如何在Angular controller中调用API,angularjs,Angularjs,我面临一个角度JS控制器功能的问题。我有一个控制器,在这个控制器中我有一堆函数,这些函数是从一个包含HTTPGET和post请求的服务中调用的 具体来说,我的问题在控制器中,当我尝试写: $scope.functionName = function() { //some code } 我的函数根本没有被调用。当我执行以下操作时,会调用我的函数,但其余函数的作用域未定义 app.controller("ControllerName", function ($scope, Service

我面临一个角度JS控制器功能的问题。我有一个控制器,在这个控制器中我有一堆函数,这些函数是从一个包含HTTPGET和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”,函数($scope,ServiceName){
$scope.getAll=函数{
log(“调用的函数”);
}
$scope.getAll();
})
此代码将无法按预期工作:

app.controller(“ControllerName”,函数($scope,ServiceName){
$scope.getAll=函数{
log(“调用的函数”);
}
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


您可以更改以测试它

您好,非常感谢您回复我。是的,我正在使用$scope,正如您在示例中所做的那样。即使这样,我的函数也不会被调用。它也不会给出任何错误。您需要显示一个。你在问题中显示的代码没有问题(除了定义
AppDefaults()
和调用
getAppDefaults()
)。嗨,我已经在下面的帖子中发布了我的代码,你能看一下吗。app.controller(“ControllerName”,function($scope,ServiceName){$scope.getAll();$scope.getAll=function(){//some code}您好,非常感谢您回复我。是的,我正在使用$scope,正如您在示例中所做的那样。即使如此,我的函数也不会被调用。它也不会给出任何错误。现在,我有一个问题,那么,我们为什么要使用getAll()呢我很抱歉,如果这是一个愚蠢的问题,我对这个有角度的JS.app.controller(“ControllerName”,function($scope,ServiceName){$scope.getAll=function(){console.log(“function called”);}我没有使用这个getAll();这里,那么,是不是因为这个原因,在上面的注释中它不起作用,您定义了函数,但没有调用它。您在哪里使用getAll();是的,我正在按照你的建议做所有事情。主要问题是控制器。当我使用$scope.function时,我的函数没有被调用。感谢你让我没有在函数下面使用$scope.functionName,这就是为什么它没有被调用的原因。这是一个愚蠢的错误。我是新手。现在,我又遇到了另一个问题,当我尝试在属于同一控制器的另一个函数中使用作用域时,作用域未定义。更多信息?如果没有$scope,则无法访问视图中的函数。例如,在函数1中,我使用$scope.Name=d.table.data。然后在函数2中,我想使用$scope.Name。它总是说作用域未定义