【问题标题】:Vue.js v-model in Laravel Blade @foreach multiple text input issueLaravel Blade @foreach 中的 Vue.js v-model 多文本输入问题
【发布时间】:2018-07-04 09:21:01
【问题描述】:

您好,我有一个可以查看帖子和 cmets 的 Laravel 应用。我的问题是输入文本中的 Vue v-model 和 Blade 中的 @foreach。它显示每个帖子的 cmets 输入框。当我将文本添加到帖子下的任何输入时,该文本会出现在页面上的每个评论输入中。我怎样才能只查看我正在输入的当前输入上的输入文本,而不是每一个?

我的 HTML:

                   @foreach($posts as $post)
                     <div class="row add-comment">
                        <div class="col-md-12">
                          <div class="form-group">
                            <input type="text" name="addComment" placeholder="Add your comment" class="form-control" v-model="comment">
                          </div>
                          <input id="addComment" type="submit" name="submitComment" value="Submit Comment" class="btn btn-primary" v-on:click="submitComment({{ $post->id }})">
                        </div>

                      </div>
                   @endforeach

我的 Vue:

var posts = new Vue({
    el: "#posts",
    data: {
      comment: '',
    },

    methods: {
      submitComment: function(id){

        $.ajaxSetup({
          headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr("content")
          }
        });

        $.ajax({
          url:'/post/comment/create/' + id,
          type: "POST",
          data: {
            comment: this.comment,
            post_id: id
          },

          success:function(response){
            toastr.success(response.response);
          },
          error: function(error){
            toastr.error(error.error)
          }
        });
      }
    },
  });

【问题讨论】:

    标签: javascript php laravel vue.js


    【解决方案1】:

    问题是您将相同的数据属性comment 绑定到每个输入。您需要为您的 v-model 创建一个数组以独立绑定每个元素。请尝试以下操作:

     data: {
       comment: [],
     },
    
     <input type="text" name="addComment-{{ $post->id }}" placeholder="Add your comment" class="form-control" v-model="comment[{{ $post->id }}]">
    

    您可能需要事先将comment: [] 初始化为$posts 的长度,我没有测试过这段代码。

    您的 ajax 也需要更新:

    data: {
        comment: this.comment[id],
        post_id: id
    },
    

    【讨论】:

    • 当我尝试提交它时,这会破坏我的代码。打字问题得到了解决。
    • 它到底是怎么破的?如果可以,请发布错误日志或异常。
    • 它给出错误500 Internal Server Error,并且网络选项卡下的消息是Type error: Argument 1 passed to Illuminate\\Database\\Grammar::parameterize() must be of the type array, integer given, called in C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Query\\Grammars\\Grammar.php on line 681。还没有日志 - 我的日志有时需要一段时间才能更新。有没有办法更快地查看日志文件中的结果?
    • 但是我仍然对日志文件感到好奇——现在已经提到了。它可以以某种方式更新吗?
    • 我从来没有遇到过写入日志文件的延迟,当遇到可记录的异常或日志语句时应该立即发生。也许您的日志文件非常大,需要一段时间才能读入?
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 2018-07-12
    • 2019-05-11
    • 2019-06-26
    • 2018-01-09
    • 2019-11-08
    • 2019-05-07
    • 2020-03-18
    相关资源
    最近更新 更多