Javascript Angular JS从1.1.0升级到1.1.1后失败

Javascript Angular JS从1.1.0升级到1.1.1后失败,javascript,angularjs,angularjs-ng-repeat,angular-resource,Javascript,Angularjs,Angularjs Ng Repeat,Angular Resource,升级时,加载ng repeat需要非常长的时间,并尝试在没有$resource提供的内容的情况下显示更多的内容框 app = angular.module("Resume", ["ngResource"]) app.factory "Entry", ["$resource", ($resource) -> - $resource("/entries") + $resource("/entries.json", {}, {}, {}) ] app.factory "Done"

升级时,加载ng repeat需要非常长的时间,并尝试在没有$resource提供的内容的情况下显示更多的内容框

 app = angular.module("Resume", ["ngResource"])

 app.factory "Entry", ["$resource", ($resource) ->
-  $resource("/entries")
+  $resource("/entries.json", {}, {}, {})
 ]

 app.factory "Done", ["$resource", ($resource) ->
-  $resource("/dones", {}, {update: {method: "PUT"}})
+  $resource("/dones.json", {}, {update: {method: "PUT"}}, {})
 ]

 app.factory "Resource", ["$resource", ($resource) ->
-  $resource("/resources", {}, {})
+  $resource("/resources.json", {}, {}, {})
 ]
我已经将问题缩小到1.1.0和1.1.1之间的更新。我查看了变更日志,但没有任何东西显示我是罪魁祸首,但它一定在那里

Changelog=>

此应用程序的存储库=>

目前我的角度看起来像:

app = angular.module("Resume", ["ngResource"])

app.factory "Entry", ["$resource", ($resource) ->
  $resource("/entries")
]

@EntryCtrl = ["$scope", "Entry", ($scope, Entry) ->
  $scope.entries = Entry.query()
]
这在使用ng repeat的多个视图上发生:

<html ng-app="Resume">
  <div ng-controller="EntryCtrl">
    <ul>
      <li ng-repeat="entry in entries">
        {{entry.title}}
      </li>
    </ul>
  </div>
</html>

  • {{entry.title}
这是AngularJS 1.1.0版: 这是AngularJS 1.1.1版:
答案在URL文件扩展名中。从Angular版本1.1.1开始,有必要在资源中包含“.json”

 app = angular.module("Resume", ["ngResource"])

 app.factory "Entry", ["$resource", ($resource) ->
-  $resource("/entries")
+  $resource("/entries.json", {}, {}, {})
 ]

 app.factory "Done", ["$resource", ($resource) ->
-  $resource("/dones", {}, {update: {method: "PUT"}})
+  $resource("/dones.json", {}, {update: {method: "PUT"}}, {})
 ]

 app.factory "Resource", ["$resource", ($resource) ->
-  $resource("/resources", {}, {})
+  $resource("/resources.json", {}, {}, {})
 ]

有人能澄清一下这是因为我的Rails 4后端,还是因为它是一个新的角度要求?

您必须添加.json并不完全正确-至少从我从1.0.x切换到1.1.x时的经验来看不是这样

为了使Rails应用程序返回json而不在Angular 1.1.x的URL中指定扩展名,您需要使Angular向http请求添加额外的头:

myModule.config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; }]); myModule.config(['$httpProvider',函数($httpProvider){ $httpProvider.defaults.headers.common['X-Requested-With']='XMLHttpRequest'; }]); 默认情况下,Rails将呈现整个HTML,而不是返回JSON


/echo/json
正在返回
{}
,因此我不得不用一个模型(使用超时)替换您的资源。我看不出ng有任何问题。这是角度要求。我刚把答案贴在下面,这不符合你的例子吗?如果你的JSON服务在某处可用,用你的angular代码创建一个plunker,我可以告诉你应该更改什么。在Rails 3.2和Angular 1.1.4中添加此标题对我来说很有用。正如在Github中所写,Rails需要header来返回JSON(如果您没有指定.JSON扩展名)。您的另一个选择是只返回Rails控制器中的JSON,而不是respond|u to do | format |。。。不同格式的不同操作只需呈现:json