未触发流星快速表单方法
Meteor quick form method not fired
我有一个 meteor 表单,我不希望用户能够在其中修改 ID,所以我省略了该字段。但是我将其添加回去以便能够继续更新。当我提交表单时,它卡住了并且服务器从未被调用过..
感谢任何帮助,谢谢!
donators.html:
<template name="dInfo">
{{> dMove}}
{{#if getDoc}}
<label for="num">Numéro</label>
<input type="text" id="num" class="form-control" placeholder="ID" value="{{getDoc._id}}" readonly>
{{> quickForm schema=nwsc omitFields="_id" id="dUpt" doc=getDoc type="method" meteormethod="sayHi" buttonContent="Soumettre" buttonClasses="btn btn-lg btn-primary btn-block"}}
<button type="button" class="btn btn-lg btn-primary btn-warning btn-block btn-del">Supprimer</button>
{{/if}}
</template>
客户端:
AutoForm.hooks({
dUpt: {
before: {
method: function(doc) {
doc._id = donators.find().fetch()[cursor.get()]._id;
}
},
onError: function(i, e) {
console.log(i);
console.log(e);
}
}
});
服务器端:
Meteor.methods({
sayHi: function(ins) {console.log(ins);},
updateDonator: function(ins) {
if(Meteor.userId() === null)
return;
if(ins._id === undefined)
return;
if(check(ins, dSchema) === false)
return;
dSchema.clean(ins);
ins.closed = false;
donators.update({_id: ins._id}, {$set: ins});
logs.insert({user: Meteor.userId(), email: Meteor.user().username, table: 'Donators', action:'Update', item: ins._id, date: new Date()});
}
});
sayHi 从未记录过任何内容,我想它从未被调用过,也从未触发过任何错误。
谢谢!
根据 AutoForm documentation about callback hooks,在之前的事件中,您可以通过以下任一方式修改文档并return它:
// Then return it or pass it to this.result()
return doc; (synchronous)
return false; (synchronous, cancel)
this.result(doc); (asynchronous)
this.result(false); (asynchronous, cancel)
您的代码未 return 修改后的文档。将 return doc;
添加到之前 -> 方法:
AutoForm.hooks({
dUpt: {
before: {
method: function(doc) {
doc._id = donators.find().fetch()[cursor.get()]._id;
return doc; // Add this line
}
},
onError: function(i, e) {
console.log(i);
console.log(e);
}
}
});
如果 AutoForm 没有取回 doc 对象,它将取消操作。
我有一个 meteor 表单,我不希望用户能够在其中修改 ID,所以我省略了该字段。但是我将其添加回去以便能够继续更新。当我提交表单时,它卡住了并且服务器从未被调用过..
感谢任何帮助,谢谢!
donators.html:
<template name="dInfo">
{{> dMove}}
{{#if getDoc}}
<label for="num">Numéro</label>
<input type="text" id="num" class="form-control" placeholder="ID" value="{{getDoc._id}}" readonly>
{{> quickForm schema=nwsc omitFields="_id" id="dUpt" doc=getDoc type="method" meteormethod="sayHi" buttonContent="Soumettre" buttonClasses="btn btn-lg btn-primary btn-block"}}
<button type="button" class="btn btn-lg btn-primary btn-warning btn-block btn-del">Supprimer</button>
{{/if}}
</template>
客户端:
AutoForm.hooks({
dUpt: {
before: {
method: function(doc) {
doc._id = donators.find().fetch()[cursor.get()]._id;
}
},
onError: function(i, e) {
console.log(i);
console.log(e);
}
}
});
服务器端:
Meteor.methods({
sayHi: function(ins) {console.log(ins);},
updateDonator: function(ins) {
if(Meteor.userId() === null)
return;
if(ins._id === undefined)
return;
if(check(ins, dSchema) === false)
return;
dSchema.clean(ins);
ins.closed = false;
donators.update({_id: ins._id}, {$set: ins});
logs.insert({user: Meteor.userId(), email: Meteor.user().username, table: 'Donators', action:'Update', item: ins._id, date: new Date()});
}
});
sayHi 从未记录过任何内容,我想它从未被调用过,也从未触发过任何错误。
谢谢!
根据 AutoForm documentation about callback hooks,在之前的事件中,您可以通过以下任一方式修改文档并return它:
// Then return it or pass it to this.result()
return doc; (synchronous)
return false; (synchronous, cancel)
this.result(doc); (asynchronous)
this.result(false); (asynchronous, cancel)
您的代码未 return 修改后的文档。将 return doc;
添加到之前 -> 方法:
AutoForm.hooks({
dUpt: {
before: {
method: function(doc) {
doc._id = donators.find().fetch()[cursor.get()]._id;
return doc; // Add this line
}
},
onError: function(i, e) {
console.log(i);
console.log(e);
}
}
});
如果 AutoForm 没有取回 doc 对象,它将取消操作。