javascript - AngularJS रिक्त अनुरोध पोस्ट करता है?




post coffeescript (2)

ठीक है, मैंने इस मुद्दे को हल किया है किसी तरह सिनात्रा को कोणीय से पदों को ठीक से नहीं मिल रहा था और स्वचालित रूप से उन्हें पैरामीटर में नहीं डाल रहा था इसलिए यदि हम अनुरोध मैन्युअल रूप से पार्स करते हैं - यह काम करता है उसके जैसा:

post '/layer/:layer_id' do
  @updated_layer = JSON.parse(request.body.string)
  @layer = PageLayer.where(id: params[:layer_id]).first
  @layer.content = @updated_layer['content']
  @layer.save 
end 

मैं AngularJS में एक नौसिखिया हूँ और जब मैंने अंगुलियोज़ के साथ एक पोस्ट अनुरोध करने का प्रयास किया और मुझे इसके साथ कोई पैरामीटर नहीं दिया गया, तो मुझे एक समस्या का सामना करना पड़ा। मैं सीनाट्रा को एक शांत इंटरफ़ेस के रूप में उपयोग करता हूं

मेरे सिनात्रा बैकएंड का यही तरीका दिखता है:

post '/layer/:layer_id' do
  @layer = PageLayer.where(id: params[:layer_id]).first
  @layer.content = params[:content]
  @layer.save
end

अगर पोस्टमैन क्रोम एक्सटेंशन के साथ पोस्ट करने की कोशिश करें - यह काम करता है! सिनात्रा सामग्री को ठीक से बचाता है। इसलिए मुझे यकीन है कि बैकएंड काम करना चाहिए

इसी तरह मेरे कोणीय परीक्षण कोड कैसे दिखता है:

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>

तो, एकमात्र सवाल यह है कि: क्या ग़लत है? मैं पोस्टमैन के साथ सही अनुरोध क्यों कर सकता हूं, लेकिन कोण के साथ नहीं? ऐनालियर खाली "सामग्री" देता है इसलिए सिनात्रा इसे हर बार "" के रूप में सहेजता है

मैंने एक परत की संरचना भी जुड़ी है:

g {id: 27245, page_id: 2302, external_id: 26518, original_upload: null…}
content: "dfgdfg"
external_id: 26518
id: 27245
layerNumber: 8
page_id: 2302

मैं किस प्रकार के कोणीय पदों पर लॉग इन कर सकता हूं?


हे यह मेरे पास सटीक समस्या है, और अब जवाब इतना स्पष्ट लगता है मुझे पता था कि कोणीय जेसन भेज रहा था, लेकिन कोई बात नहीं जो मैंने कोशिश की वह काम नहीं कर रहा था। इसने मुझे सही दिशा में ले लिया, लेकिन जेसन को पार्स करने के लिए मुझे लिखना पड़ा

ng_params = JSON.parse(request.body.read)

मुझे 'पढ़ने' के लिए 'स्ट्रिंग' को बदलना पड़ा हो सकता है कि मेरे पास जेसन मणि का कुछ नया संस्करण है या कुछ मेरी पूरी सहेजना प्रक्रिया इस तरह है:

post '/api/v1/test' do
  ng_params = JSON.parse(request.body.read)
  @foo = Foo.new(ng_params)
  if @foo.save
    puts "Page Saved"
    content_type :json
    rabl :foos, format: "json"
  end
end

मैं rabl का उपयोग json को जेएसए को स्वरूपित करने के लिए करता हूं, जो कि जेनातान डेटा सिनात्रा वापस भेजता है (कोई ईमेल या पासवर्ड नहीं)

मेरा कोणीय कोड सिर्फ यही है (अभी तक लागू नहीं किया गया है, पैच या हटाएं, और डेटा का स्वत: अपडेट अभी तक नहीं है। आपको अभी भी नया पोस्ट देखने के लिए पृष्ठ को रीफ्रेश करना होगा।) और स्पष्ट होने के लिए, फ़्यूज़ 'कहां है, जहां सक्रियरेकॉर्ड मॉडल' फू 'है, और' कुछ 'नामक एक स्तंभ (टाइमस्टैंप और आईडी के अलावा, जो मुझे हमेशा सुनिश्चित होता है कि वहां हमेशा होता है)।

// app declaration
var app = angular.module("App", ['ngResource']);

// data service
app.factory('Foo', ['$resource', function($resource) {
  return $resource('/api/v1/test/:id', {id: '@id'});
}]);

// the controller
app.controller('Controller', function($scope, Foo) {

  $scope.foos = Foo.query();

  $scope.create = function(anything) {
    Foo.save({anything: anything}, function(foo){
      $scope.foos.push(foo);
    });
  };
});

फिर मेरे मार्कअप में फॉर्म इस तरह दिखता है, जहां महत्वपूर्ण बात 'एनजी-जमा' में तर्क के रूप में 'कुछ' के साथ 'बनाने' का कॉल है। यदि आपके पास आपकी तालिका में एक से अधिक कॉलम हैं, तो आप एक से अधिक तर्क के साथ 'बनाएँ' कॉल करते हैं। 'बनाओ (कुछ भी, बार)'

<h3>Add something new</h3>
<form ng-submit="create(anything)">
  <input ng-model="anything" type="text">
  <button type="submit">Do it</button>
</form>

डेटा प्रदर्शित करते समय यह है

<li ng-repeat="foo in foos">
  <p>{{foo.anything}}</p>
</li>




sinatra