我尝试使用以下示例代码定义数据库访问工厂:
MyApp.service("DB_Services", [ "$http" , function($http) {
DB_Services.Get_Data_from_DB_Internal = function (p_Request) {
var http = new XMLHttpRequest();
var url = "http://localhost/servlet/Test_ui";
var params = "data=" + p_Request ;
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
if(http.readyState == 4 && http.status == 200) {
return http.responseText ;
}
}
http.send(params);
return DB_Services ;
}]);
我应该补充一点,这段代码部署在一个单独的文件中,该文件列在index.html的<script src=...>
条目中。
加载之后(以及之前使用它!),我收到以下错误(Chorme的控制台):未捕获的ReferenceError:未定义MyApp。
当然,MyApp与所有控制器使用的名称完全相同,因此没有拼写错误。
此外,如果我改变了#34; MyApp&#34;对于别的东西,比如说,&#34; TestName&#34;,我得到了同样的错误,除了这次没有定义的是TestName。
无法弄清楚语法错误是什么。
任何想法都将受到赞赏。
答案 0 :(得分:0)
此答案基于您在index.html的单独angular.module('myApp')
文件中引导角度应用(例如<script>
)的假设
<script>
文件您需要确保初始角度设置代码出现在任何其他角度<script>
之前。
<head>
.....
<script>
var myApp = angular.module('myApp', [])
</script>
<script src="otherNg.js">
<script src="anotherNg.js">
<script>
文件中的模块为了在myApp
模块中正确添加其他构造,您需要确保正确访问它。由于它是在另一个文件中定义的,因此您需要使用以下语法来访问它:
var myApp = angular.module('myApp')
.service("DB_Services", [ .... ])
请注意,此代码不包含数组的第二个参数...这是因为这是获取已定义模块的 getter 语法。
答案 1 :(得分:0)
确保在脚本文件中引用该模块
var MyApp = angular.module('MyApp');
MyApp.service(...);
这与最初定义模块时不同
angular.module('MyApp',[]);
根据经验,这不依赖于.html中脚本文件的顺序,例如:
<script src="javascripts/services/DB_Services.js"></script>
<script src="javascripts/app.js"></script>
只要您在DB_Services.js脚本中引用该模块,这将正常工作。 angular会做数学!