2016-12-30 35 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()在控制器中可以查看正在发送的是什么数据和只有文本被发送。我试图将前两个输入隐藏起来,并在其中有价值。它基本上是向线程发送评论,所以它包含线程的用户和标识的id。我不希望它们可见,但我需要将它们发送给控制器。当我输入的数字manualy,它工作正常,但是当我有它的价值=“”属性,我得到这个错误控制台:

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+)? 

我不明白,因为当我打开开发工具并看看它的价值,它就像一个数字。而当

回答

0

如果你有时间控制器currentUser.id值初始化,那么你就可以创建: $scope.messageData = { id_user: currentUser.id };

如果它需要一些时间来加载currentUser值然后分配回messageData object: $scope.messageData.id_user = currentUser.id;

最后,删除value属性,错误应该消失。你可以为id_thread输入做同样的事情。

+0

好的,所以我删除了值属性。然后在发送文本值时,我在控制器本身中添加了所需的id。我在localStorage中有用户标识,线程标识在URL中 – Arcane

0

我想你需要摆脱value={{currentUser.id}}value={{messages[0].id_thread}},因为ng-model设置实际值。你可以用控制器初始化的初始值设置messageData

相关问题