【问题标题】:AngularJs - route resolve function does not recognize factoryAngularJs - 路由解析功能无法识别工厂
【发布时间】:2017-08-10 12:34:12
【问题描述】:

我正在使用 AngularJS 1.6.1,我正在尝试做一个我以前(很久以前)已经完成的简单任务,但由于某种原因我无法意识到这次发生了什么。

基本上我想调用我的 REST 服务,但是当我在 resolve 函数的参数中传递我的 factory 时,它停止工作。

为了方便起见,我做了一个简单的例子贴在这里:

index.html

<html ng-app="TesteApp">
<head>
  <script src="lib/angular/angular.js"></script>
  <script src="lib/angular/angular-route.js"></script>

  <script src="app.js"></script>
</head>
<body>
    <div class="ng-view">
    </div>
</body>

view.html

<h1>DONE</h1>

app.js

angular.module('TesteApp', ['ngRoute']);

angular.module('TesteApp').controller('testeController', function($scope, resultSet) {
   console.log("1");
});

angular.module('TesteApp').config(function ($routeProvider) {
    $routeProvider.when("/", {
        templateUrl: "view.html",
        controller: "testeController",
        resolve: {
            resultSet: function(callApi) { // seems like 'callApi' is not being recognized?!
                //If I return the fixed list below and take the 'callApi' parameter above, it works.
                //return "[{id:1, nome: 'teste'}, {id:2, nome: 'teste2'}]";
                return callApi.getResult(); 
            }
        }
    });
});

angular.module("TesteApp").factory("callApi", function ($http, config) {
    var _getResult = function () {
        return $http.get("http://localhost:8080/result");
    };

    return {
        getResult: _getResult
    };
});

就像我在评论中所说的那样,似乎无法识别“callApi”。

控制台不打印错误,&lt;div class="ng-view"&gt;没有被&lt;h1&gt;DONE&lt;/h1&gt;替换,实际上没有请求完成。

【问题讨论】:

  • “无法识别”到底是什么?如果你有错误,请把它完整地发布出来。
  • @estus 你有什么想法,为什么callApi 工厂内部的confi 依赖注入在above code 中静默失败。它不会在控制台中引发错误。我以前从未见过这个:(抱歉在这里问你
  • @PankajParkar 你好。没问题。这是因为服务首先注入解析器,工厂中的注入错误导致解析器拒绝和路由器错误,plnkr.co/edit/IS73Ux4yjaKVuMCR8U9q?p=preview。我认为我以前没有遇到过这种情况,但是是的,这很有意义,这就是我期望它起作用的方式。我想在开发环境中设置 $routeChangeError 处理程序是有意义的,感谢您引起我的注意,请记住这一点。
  • @estus 太棒了!伟大的!太棒了!,您总是每次都添加信息丰富的 cmets。我今天学到了一些新东西:) 你一如既往的棒。非常感谢:)
  • 不客气。很高兴在 SO 的 Angular 研究员中见到你。

标签: javascript angularjs angularjs-routing


【解决方案1】:

更新

它很奇怪(因为它没有在控制台中抛出任何错误),但是在 callApi 中注入的 config 依赖项在任何地方都没有提到,所以它在那里失败了。删除了 unknown 依赖项将解决您的问题。

Demo Here


您的服务方法名称错误。而不是getArticles 调用getResult

return callApi.getArticles();

应该是

return callApi.getResult();

【讨论】:

  • 对不起,我在这里替换了一些东西是我的错误。问题仍然存在。
  • 您能否更新您遇到的代码和确切错误
  • @BrunoBL 检查更新的答案 :) 希望它会帮助你 :)
  • 对,对于这个例子它解决了。我原来的应用程序实际上有“配置”,问题仍然存在..即使是配置。但是对于我做的这个简单的例子,它是有效的,所以我会考虑你的答案并尝试在原始应用程序中找出问题。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
相关资源
最近更新 更多