我有一个相当简单的角度控制器方法:
$scope.addComment = function () {
if ($scope.newComment.message) {
$scope.can_add_comments = false;
new Comments({ comment: $scope.newComment }).$save(function (comment) {
$scope.comments.unshift(comment);
return $scope.can_add_comments = true;
});
return $scope.newComment = {};
}
};
在我的表格中,我有一个textarea,其中包含评论的价值:
<textarea class="required" cols="40" id="new_comment_message" maxlength="2500" ng-disabled="!can_add_comments" ng-model="newComment.message" required="required" rows="20"></textarea>
到目前为止效果很好,但我确实想发送一些数据,隐藏数据和评论。所以我添加了一些东西来保持这个价值:
<input id="hash_id" name="hash_id" ng-init="__1515604539_122642" ng-model="newComment.hash_id" type="hidden" value="__1515604539_122642">
然而,当我检查$scope.newComment
时,它总是作为一个对象返回,只有消息作为它的属性,这是文本区域的值,我没有得到属性在对象hash_id
上。
当我将此输入非隐藏并且我手动在输入字段中输入值并提交表单时,我会得到一个具有hash_id
属性的对象。我在这里做错了什么,而不是做对了?
答案 0 :(得分:2)
据我所知,ng-model
不会将value
属性用作“默认”(即它不会将其复制回模型中)。如果您需要默认值,则应将其放置在定义模型的任何位置:
$scope.newComment = { hash_id: "__1515604539_122642", /* Other params */ };
或者,将ng-init
更改为作业应该有效(尽管我会推荐以上解决方案):
<input id="hash_id" name="hash_id" ng-init="newComment.hash_id = '__1515604539_122642'" ng-model="newComment.hash_id" type="hidden">