未标识角度应用程序名称

时间:2016-01-12 15:49:23

标签: javascript angularjs factory

我尝试使用以下示例代码定义数据库访问工厂:

    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。

无法弄清楚语法错误是什么。

任何想法都将受到赞赏。

2 个答案:

答案 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会做数学!