Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何通过html按钮提交集合_Meteor - Fatal编程技术网

Meteor 如何通过html按钮提交集合

Meteor 如何通过html按钮提交集合,meteor,Meteor,我有一个html按钮。我想在单击时插入一个集合。我该怎么做?我知道如何从控制台执行,但不知道如何从页面执行。我现在正在使用基本的hello world示例 下面是我的代码 var savedState = new Meteor.Collection("SavedState"); Template.hello.events({ 'click input' : function () { savedState.insert({Category:"SYNTHS", items:

我有一个html按钮。我想在单击时插入一个集合。我该怎么做?我知道如何从控制台执行,但不知道如何从页面执行。我现在正在使用基本的hello world示例

下面是我的代码

var savedState = new Meteor.Collection("SavedState");

 Template.hello.events({
    'click input' : function () {

    savedState.insert({Category:"SYNTHS", items: [{Name:"whatever"}]});

    }
  });
}

你犯了什么错误?假设围绕它编写的代码是正确的,那么您编写的代码是有效的。见下文

Javascript:

var savedState = new Meteor.Collection("SavedState");

if (Meteor.isClient) {
    Template.hello.events({
        'click input' : function () {
            savedState.insert({Category:"SYNTHS", items: [{Name:"whatever"}]});
        }
    });
}
模板:

<body>
    {{> hello}}
</body>

<template name="hello">
    <input type="button" value="Click" />
</template>

{{>你好}

事实上你是对的,我的代码确实有效。我不知道该如何验证,仅此而已。savedState.find({}).count();但作为旁注,我想知道将它放在iClient块中的意义是什么。这两种方法似乎都有效。如果将insert放在iClient之外,它将同时在客户端和服务器上运行。你通常不想这样。事实上,我想不出一个你什么时候想要的例子。如果客户机执行了插入操作,服务器将听到该消息,如果客户机具有权限(在Hello World中是这样做的,因为autopublish处于启用状态),服务器将允许该操作。反之亦然:如果服务器执行插入,并且客户机已订阅,则数据将进入客户机集合。当然,在两端强制插入是可能的,但对AIK来说并不是特别有用。您应该将
新Meteor.Collection
放在外部,因为您希望它同时在服务器和客户端上运行。这就是为什么要将代码放在isClient/isServer之外的最佳示例