2017-06-19 3 views
0

私の仕事のためにUpdateメソッドを作成する必要がありますが、AngularJsではフォームがng-model情報を取得していないので、どうしてか分かりません。 2時間前に私は簡単なPOSTメソッドで簡単にやっていたからです。ここでPUTメソッドはAngularJsで機能しません

は私のコントローラのコードです:

$scope.UpdateData = function (petId) {  
    $http({ 
     method: 'PUT', 
     url: baseApiUrl + '/pets/' + petId, 
     data: { 
      id: petId, 
      name: $scope.updateName, 
      age: $scope.updateAge, 
      owner: $scope.updateOwner, 
     } 
    }).then(function successCallback(response) { 
     console.log(response); 
    }, function errorCallback(response) { 
     console.log(response); 
    }); 
}; 

そして、これが私の見解である:私は私のフォームの値を変更すると

<table class="table table-hover table-bordered"> 
    <thead> 
    <tr class="text-center pointer back-grey"> 
     <th class="text-red"> 
     Nom 
     </th> 
     <th class="text-red"> 
     Age 
     </th> 
     <th class="text-red"> 
     Propriétaire 
     </th> 
     <th class="text-red"> 
     Action 
     </th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr ng-repeat="pet in pets"> 
     <td><input type="text" placeholder="{{ pet.name }}" name="name" class="form-control" ng-model="updateName" required></td> 
     <td><input type="text" placeholder="{{ pet.age }}" name="age" class="form-control" ng-model="updateAge" required></td> 
     <td><input type="text" placeholder="{{ pet.owner }}" name="owner" class="form-control" ng-model="updateOwner" required></td> 
     <td><input id="update" type="submit" class="btn btn-danger disabled" ng-click="UpdateData(pet.id)" /></td> 
    </tr> 
    </tbody> 
</table> 

、と私はこれを持っているボタンを押します。

Object {data: "1", status: 200, config: Object, headers: function} 

私が尋ねたとおり、IDは尋ねられますが、名前は変更されません。そして、私が$ helloのような文字列で$ scope.updateNameを変更すると、これは動作しています...

ありがとうございました!

答えて

1

「ペット」のすべてのオブジェクトに同じ変数を使用しています。したがって、2つのペットがいる場合、同じ変数 'updateName'の2つの入力があります。これは未定義の動作につながる可能性があります。 私はあなたがこのような何かをすることをお勧め:TypeError例外::私はあなたが提案したが、私はフィールド内の何かを書くしようとしたとき、私はまだ、このエラーを持っているものでした

<tr ng-repeat="pet in pets track by $index"> 
    <td><input type="text" placeholder="{{ pet.name }}" name="name" class="form-control" ng-model="updateName[$index]" required></td> 
    <td><input type="text" placeholder="{{ pet.age }}" name="age" class="form-control" ng-model="updateAge[$index]" required></td> 
    <td><input type="text" placeholder="{{ pet.owner }}" name="owner" class="form-control" ng-model="updateOwner[$index]" required></td> 
    <td><input id="update" type="submit" class="btn btn-danger disabled" ng-click="UpdateData($index)" /></td> 
</tr> 


$scope.UpdateData = function (idx) {  
    $http({ 
     method: 'PUT', 
     url: baseApiUrl + '/pets/' + petId, 
     data: { 
      id: $scope.pets[idx], 
      name: $scope.updateName[idx], 
      age: $scope.updateAge[idx], 
      owner: $scope.updateOwner[idx], 
     } 
    }).then(function successCallback(response) { 
     console.log(response); 
    }, function errorCallback(response) { 
     console.log(response); 
    }); 
}; 
+0

プロパティ「0」未定義のを設定することはできません。 –

+0

あなたは配列をinitiliazeしていないようです。スコープのinitilizationでこれを行う必要があります:** $ scope.updateAge = []; **したがって、すべての配列に対してそうです。 – Vanderson

関連する問題