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