【问题标题】:failed to pass JSON object in anchor tag data template无法在锚标记数据模板中传递 JSON 对象
【发布时间】:2020-09-28 11:15:14
【问题描述】:

在 laravel 中,我的控制器返回这个 集合,如您所见,它有另一个集合 evidences 作为关系。我如何分离或使用这个集合。我已经在做的是下面这段代码sn-p。

template: function (row) {
console.log("in return: ", row.evidences))
return '\
       <a href="javascript:;" class="btn btn-sm btn-clean btn-icon btn-icon-md" 
       title="Show details" \
       data-toggle="modal" data-target="#showModal" data-id="' + row.id +
       '" data-title="' + row.title +
       '" data-description="' + row.description +
       '" data-evidencedata="' + row.evidences+
       '">\
       <i class="la la-eye"></i>\
       </a>\
       ';
},

现在,如果我在上面的函数中使用 console.log(row.evidences)return 语句之前,它会打印出它所拥有的内容,并且 row.evidences 的类型是 Object 因为我可以遍历它并使用它。现在的问题是当我尝试在另一个 jquery 函数中访问这个 evidences collection 时,我不能。

我在下面这段代码sn-p中访问它

$('#showModal').on('show.bs.modal', function (event) {
            let button = $(event.relatedTarget);
            let id = button.data('id');
            let modal = $(this);
            modal.find('form input#title').val(button.data('title'));
            modal.find('form textarea#description').val(button.data('description'));

            console.log("in show: ", button.data('evidencedata'))

        });

它还将其类型从Object 更改为String,这无法让我遍历它。我尝试了JSON.stringify()JSON.parse(),但没有结果,但我能够访问我发送的其他数据,即titledescription

我在这里做错了什么。我错过了什么吗?

【问题讨论】:

    标签: javascript jquery laravel eloquent


    【解决方案1】:

    是的!问题出在 object-string 上。当数据在数据模板中传递时,它被转换为字符串。所以解决这个问题的简单方法是使用JSON.Stringify(row.evidences)Object 转换为String,在我的情况下是String,然后相应地调整双引号和单引号,然后在我想使用的任何地方简单地使用@987654325 @,并使用forEach 或其他方式使用它。

    【讨论】:

      【解决方案2】:

      titledescription 正在工作,因为它们已经是纯字符串。您正在为按钮定义一串 html 文本。您使用的任何变量也会变成字符串。

      由于您的 evidencesdata 是一个对象,因此这将无法正常工作。您有 2 个选项: 1. 将对象转换为 json,而不是对其进行基本编码(以避免引号问题)。稍后您可以对其进行基础解码,并解析 json,您将再次拥有该对象。 2.不返回按钮字符串,而是定义一个按钮对象,并使用数据函数将该对象添加到按钮中。 (使用 jQuery $("&lt;button&gt;").data(evidencesdata)

      就 JavaScript 内部结构和内存中的对象而言,第二种可能更好,但可能比第一种对代码的影响更大。

      【讨论】:

      • 非常感谢您的回复。我的问题已经解决了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      相关资源
      最近更新 更多