【问题标题】:angular service doesn't start角度服务未启动
【发布时间】:2016-03-25 09:16:06
【问题描述】:

我正在尝试编写我的第一个 Angular 项目。到目前为止,我创建了 3 个文件:index.html、index.js 和 service.js

service.js

var app = angular.module('app');

app.service('apiService', ['$http', function($http) {
  this.get = function() {
    return $http.get("http://localhost:8080/api/v1/projects");
  };
  this.delete = function(id) {
    return $http.delete("http://localhost:8080/api/v1/projects/{id}", id);
  }
  this.post = function(data){
    return $http.post("http://localhost:8080/api/v1/projects", data);
  }
}]);

index.js

app.controller('controller', ['$scope', 'apiService', function($scope, apiService) {
  var vm = this;
  var getData = apiService.get().success(function(data) {
    vm.data = data;
  }); 
}]);

index.html

  <!DOCTYPE html>
  <html lang="en" ng-app="myApp">
  <head>
  <meta charset="UTF-8">
  <title></title>
  <script type="text/javavscript" src="angular.min.js"></script>
  <script type="text/javavscript" src="index.js"></script>
  <script type="text/javavscript" src="service.js"></script>
  </head>
  <body>

  <div ng-controller="controller as ctrl">
  <div ng-repeat="data in ctrl.data">{{data.name}}</div>
  </div>

  </body></html>

这是我的 web.xml

  <?xml version="1.0" encoding="ISO-8859-1"?>
   <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <servlet>
   <servlet-name>jersey</servlet-name>
   <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
   <init-param>
   <param-name>com.sun.jersey.config.property.packages</param-name>
   <param-value>io.swagger.jaxrs.json;io.swagger.jaxrs.listing;io.swagger.api</param-value>
   </init-param>
   <init-param>
   <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
   <param-value>com.sun.jersey.api.container.filter.PostReplaceFilter</param-value>
   </init-param>
   <init-param>
   <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
   <param-value>true</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
   </servlet>

   <servlet>
   <servlet-name>DefaultJaxrsConfig</servlet-name>
   <servlet-class>io.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class>
   <init-param>
   <param-name>api.version</param-name>
   <param-value>1.0.0</param-value>
   </init-param>

   <init-param>
   <param-name>swagger.api.title</param-name>
   <param-value>Swagger Server</param-value>
   </init-param>
   <init-param>
   <param-name>swagger.api.basepath</param-name>
   <param-value>http://localhost:8080/api/v1</param-value>
   </init-param>
   <load-on-startup>2</load-on-startup>
   </servlet>

   <filter>
   <filter-name>ApiOriginFilter</filter-name>
   <filter-class>io.swagger.api.ApiOriginFilter</filter-class>
   </filter>

   <filter-mapping>
   <filter-name>ApiOriginFilter</filter-name>
   <url-pattern>/*</url-pattern>
   </filter-mapping>
   </web-app>

我的问题是我的角度永远不会启动!!!但我在这里没有看到任何问题,对我来说一切似乎都很正常。我不知道问题出在哪里

【问题讨论】:

标签: html angularjs web-services


【解决方案1】:

尝试一些事情

  1. ng-app="myApp" 替换为ng-app="app"
  2. 模块应该这样声明:var app = angular.module('app', []);(添加空依赖项 - [ ]);
  3. 在 html 中更改文件的顺序

像这样:

<script type="text/javascript" src="service.js"></script>  
<script type="text/javascript" src="index.js"></script>

仅仅因为主模块的第一个定义存在于service.jsvar app = angular.module('app');

  1. 此外,模块顺序也很重要。如果您将面临类似的错误 "参数 'MyCtrl' 不是函数,未定义",取 看看this answer,因为它有一些关于此类的解释 事情,比如定义和订单错误

  2. 已添加工作jsfiddle

【讨论】:

  • 还有一个无法解决问题的答案。哈桑已经涵盖了所有这些内容。
  • 同意,您提供了更多详细信息,也许您想提一下正确的类型text/javascript 也意味着很多。
  • @dfsq 又添加了一个案例,看看(第 2 号)
  • 现在完成了:angular.module('app', []) 是这里的另一个重要问题。
  • var app = angular.module('app', []) 这也不会让它工作
【解决方案2】:

替换

<html lang="en" ng-app="myApp">

<html lang="en" ng-app="app">

【讨论】:

  • 我发誓它仍然不适合我。我刚刚发布了我的 web.xml。如果问题来自这个文件,你能说一下吗?谢谢!!!
【解决方案3】:

交换这两个js文件的顺序,用这个替换你的js

          <script type="text/javascript" src="service.js"></script>  
          <script type="text/javascript" src="index.js"></script>

顺序必须是这样,因为应用程序必须在控制器之前定义

和html标签必须

       <html lang="en" ng-app="app">

【讨论】:

  • 无论如何都行不通,这还不够,但是您最接近解决方案
  • 我建议你设置demo plnkr.co/edit 看看自己有什么问题。
  • 这不适用于 plunker,因为我们还没有
  • 您可以使用来自 CDN 的 Angular 设置 plunker:plnkr.co/edit/OZoVbxpbQHPEDeOyaHcj?p=preview
  • 我发誓它仍然不适合我。我刚刚发布了我的 web.xml。如果问题来自这个文件,你能说一下吗?谢谢!!!
猜你喜欢
  • 2015-11-10
  • 2014-02-20
  • 2011-08-08
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多