2016-12-30 5 views
1

コントローラにデータを送信する際に問題があります。これが私の見解ビューの入力から数値を角度に変換できない

<form ng-submit="submitMessage()"> 
       <div class="form-group"> 
        <input type="number" class="form-control input-sm" name="id_user" ng-model="messageData.id_user" value={{currentUser.id}} > 
       </div> 

       <div class="form-group"> 
        <input type="number" class="form-control input-sm" name="id_thread" ng-model="messageData.id_thread" value={{messages[0].id_thread}}> 
       </div> 

       <!-- COMMENT TEXT --> 
       <div class="form-group"> 
        <input type="text" class="form-control input-lg" name="message" ng-model="messageData.text" placeholder="Write your message"> 
       </div> 

       <!-- SUBMIT BUTTON --> 
       <div class="form-group text-right"> 
        <button type="submit" class="btn btn-primary btn-lg submit-btn">Submit</button> 
       </div> 
      </form> 

であり、これは、私は自分のデータを送信する私のコントローラ、次のとおりです。

angular.module('messageCtrl', []).controller('messageController', function($scope, $http, Message, $stateParams) { 
// object to hold all the data for the new comment form 
$scope.messageData = {}; 

//get id from route 
var id = $stateParams.id; 
// get all the comments first and bind it to the $scope.comments object 
// use the function we created in our service 
// GET ALL COMMENTS ================================================== 
Message.get(id).then(successCallback); 
function successCallback(data) { 
    $scope.messages = data.data; 
} 

// function to handle submitting the form 
// SAVE A COMMENT ===================================================== 
$scope.submitMessage = function() { 
    // save the comment. pass in comment data from the form 
    // use the function we created in our service 
    console.log($scope.messageData); 
    Message.save($scope.messageData).then(successCallback2, errorCallback); 
    function successCallback2(getData) { 
     $scope.messages = getData.data; 
     Message.get(id).then(successCallback); 
    } 

    function errorCallback(data) { 
     console.log(data); 
    } 

}; 



}); 

私は、データが送信されているかを確認するには、コントローラではconsole.log()を持っており、テキストのみが送信されます。私は、最初の2つの入力を隠しておき、その中に価値を持っているようにしようとしています。これは基本的にスレッドにコメントを送るので、スレッドのユーザIDとIDを含んでいます。私はそれらを見えるようにしたくありませんが、私はそれらをコントローラに送る必要があります。 Iてmanualy入力が数字私は値でそれを持っているとき、それは「」=属性を[OK]を動作しますが、ときに、私は、コンソールにこのエラーが表示されます。

angular.js:3505 The specified value "{{messages[0]['id_thread']}}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? 
angular.js:3505 The specified value "{{currentUser.id}}" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? 

私はDEVを開いたときので、私は、それを理解していませんツールと値を見て、それは数字としてそこにあります。そして、いつ

答えて

0

、あなたが作成することができます。 $scope.messageData = { id_user: currentUser.id };

または

は、それはその後のMessageDataに戻っ割り当てるCurrentUserに値をロードするためにいくつかの時間がかかる場合オブジェクト: $scope.messageData.id_user = currentUser.id;

最後に、value属性を削除してエラーをなくしてください。 id_thread入力に対しても同じことができます。

+0

[OK]を、ので、私は、value属性を削除しました。テキスト値を送信すると、コントローラー自体に必要なIDを追加しました。私はlocalStorageにユーザーIDを持っていて、スレッドIDはURLにありました – Arcane

0

ng-modelが実際の値を設定するので、value={{currentUser.id}}value={{messages[0].id_thread}}を取り除く必要があると思います。コントローラの初期化時に初期値をmessageDataに設定することができます。あなたが初期化された時のコントローラでcurrentUser.id値を持っている場合

関連する問題