2017-08-18 13 views
0

私はジオロケーションのAPIを開発していますが、配列にマージするために2つの座標を提出するのは苦労しています。私のマングーススキーマで 、私はこの持っている:私のindex.htmlで角:座標配列を提出しようとしています

geolocation: { 
type: { type: String, default:"Point" }, 
coordinates: [Number], 
}, 

を、私はこの入力私のコントローラで

input ng-model='values[0]' type='text' input ng-model='values[1]' 
type='text' 

を持って、私は

function mainController($scope, $http) { 
     $scope.formData = {}; 
     $scope.values=[]; 

$scope.createLocation = function() { 
     $scope.formData.geolocation.coordinates = new Array(2); 
     $scope.formData.geolocation.coordinates.push({ 
      0: $scope.values[0], 
      1: $scope.values[1] 
     }); 
     $http.post('/api/places/:location', $scope.formData) 
      .success(function(data) { 
       $scope.formData = {}; // clear the form so our user is ready to enter another      
       $scope.locations = data; 
       console.log(data); 
      }) 

をしようとしているが私が提出すると、エラーが発生する

Cannot set property 'coordinates' of undefined 

私は間違って何をしていますか?

+1

エラーはあなたの角度コードから来ているので、 '$ scope.formData.geolocation'は未定義です。おそらく 'formData'に' geolocation'プロパティを作成するのを忘れてしまったでしょう。 '{0:$ scope.values [0]、1:$ scope.values [1]}'のような書式は、あなたのバックエンドスキーマが期待しているものと一致していないことに気付くかもしれません。 "キーの名前"の使用は実際には "配列"ではなく、PHPバックグラウンドを持つ人に共通の誤解です。その言語には、「配列」とは何か本当に奇妙な概念があります。しかし、それは "フロントエンド"エラーであり、 "バックエンド"エラーではありません。 –

+0

私はエラーがフロントエンドにあると考えました。しかし、formDataの他のフィールドはすべて定義されておらず、正常に動作しています。どのように私はそれにジオロケーションを作成する必要がありますか?そして、私は自分の配列入力をどのように修正すべきですか? – SuperMonteiro

+0

オブジェクトに「ネストされたプロパティ」を作成する場合は、最初に「親プロパティ」を作成する必要があります。だから '$ scope.formData.geolocation = {}; $ scope.formData.geolocation.coordinates = new Array(2); '$ scope.formData.geolocation = {coordinates = new Array(2)};' –

答えて

0

としては、@ニール・LUNNが指摘し、エラーがフロントエンドにあった、と

$scope.formData.geolocation = { coordinates: $scope.values }; 

はそれを修正しました。

関連する問題