角度控制器仅获取更改的输入值

时间:2015-07-10 15:32:25

标签: javascript angularjs

我有一个相当简单的角度控制器方法:

$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属性的对象。我在这里做错了什么,而不是做对了?

1 个答案:

答案 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">