我是 AngularJS 的新手,当我尝试使用 AngularJS 发出 POST 请求并且它没有用它 POST 参数时,我遇到了一个问题。我使用 Sinatra 作为 RESTful 接口。
这就是我的 Sinatra 后端的外观:
post '/layer/:layer_id' do
@layer = PageLayer.where(id: params[:layer_id]).first
@layer.content = params[:content]
@layer.save
end
如果尝试使用 Postman chrome 扩展 POST - 它可以工作!Sinatra 会正确保存内容。所以我确信后端可以正常工作。
这就是我的角度测试代码的样子:
TestCtrl = ($scope, $routeParams, $http, $resource) ->
$scope.layer = []
Layer = $resource('/layer/:id', {id:'@id'})
$scope.layer = Layer.get {id: $routeParams.layerId}, ->
console.log "Got you!"
$scope.saveContent = ->
$scope.layer.$save()
console.log "Saved!"
angular.module('appDirectives', []).directive "test", ->
return (scope, element, attrs) ->
element.bind "blur", ->
console.log("blur!")
scope.saveContent()
和 HTML 代码:
<div>Content: {{layer.content}}</div>
<div>
<form>
<input type="text" test ng-model="layer.content">
</form>
</div>
所以,唯一的问题是:怎么了?为什么我可以用 Postman 提出正确的请求,但不能用 angularJS?Angular 返回空的“内容”,因此 Sinatra 每次都将其保存为“”。
我还附加了一个层的结构:
g {id: 27245, page_id: 2302, external_id: 26518, original_upload: null…}
content: "dfgdfg"
external_id: 26518
id: 27245
layerNumber: 8
page_id: 2302
如何记录确切的角度帖子?