使用流星将事件对象传递到模板中

时间:2018-11-08 17:00:48

标签: javascript meteor meteor-blaze papaparse

我正在构建一个用于自定义电子商务网站的产品网格顺序的应用程序。能够以灵活响应的方式呈现产品订单,确实可以使项目经理更轻松地为其客户创造更好的体验。

此网格顺序应用程序的一部分基于Ryan Glover(我非常感谢)的一篇文章,该文章称为《使用PapaParse导入CSV https://themeteorchef.com/tutorials/importing-csvs》。

即使模板和构建是在Meteor中,这还是一个普通的JavaScript问题。

这是我最简单的问题:如何将event object放入template中?我从event object函数中得到了Papa.parse()的罚款,并且可以console.log(it)。但是,如何将event object传递到模板中

import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';

// NOTE: trying to figure out how to pass event object to template
Template.upload.events({
  'change [name="uploadCSV"]' ( event, template ) {
  // Handles the conversion and upload
    var fileInput = document.querySelector('[name="uploadCSV"]');

    // Parse local CSV file
    Papa.parse(fileInput.files[0], {
      header: true,
        complete: function(results) {
            // console.log(results); // includes data, error, and misc

// NOTE: This is the data object to send to the template
        let itemData = results.data;
        console.log(itemData) // here is the data object

        // This test correctly iterates over the object, but should be done in the template
        itemData.forEach(function(item) {
          console.log(item)
          // console.log(item['itemcode'])
        });

// HELP! How do I send the object itemData to the template?

        } // END complete
    }); // END parse

  } // END change
}) // END events

这里是回购的链接。 https://github.com/dylannirvana/gridorderapp/tree/master/meteor/vanilla

这必须非常简单。提前谢谢了!

1 个答案:

答案 0 :(得分:1)

查看您的项目将清楚表明,该部分尚不准备就绪。您的问题不是关于TextField的问题,而是了解流星。缺少必需品。

首先检查您的events模板,没有定义数据。其次,通过grid

了解客户端和服务器上的Papa.parse

不确定您的概念应如何运行,但可以假设,某人应该能够上传包含数据的CSV文件以显示在页面中。

这是持久性数据吗?意味着应该存储数据还是将始终将其上传?

如果是持久性的,则应使用Meteor.method以及从服务器到客户端的发布和订阅集合。您可以看一下《流星之火todo》应用程序教程。

如果是临时数据,则可以创建仅客户端的minimongo集合,然后向该客户端订阅。

从解析器获取数据时,您必须将该内容插入或添加到本地或全局集合中。

这样做并在集合中具有反应性(订阅)模板时,它将自动显示其内容。

同样,您应该熟悉流星要做的教程,以了解您的需求。

希望能引导您正确的方法。

祝你好运 汤姆