Meteor AutoForm 挂钩未触发,并且获取 ec.invalidKeys 不是函数错误
Meteor AutoForm hooks not firing, and getting ec.invalidKeys is not a function errors
在我的整个应用程序中,我多次尝试使用自动表单,但我认为自动表单和 MaterializeCSS 模板之间存在真正的冲突。无论如何,我一直收到以下错误:
架构:
import SimpleSchema from 'simpl-schema';
import { Materials } from '/imports/api/materials/materials.js';
import { PurchasesAPI } from '/imports/api/purchases/api.js';
import '../../ui/components/purchasing/purchasing-autocomplete-list-template.html';
export const purchasingCreatePurchaseSchema = new SimpleSchema({
userId: {
type: String,
autoValue: function () {
if (this.isInsert) {
console.log("this is insert");
console.log(Meteor.userId());
return Meteor.userId();
} else if (this.isUpsert) {
return { $setOnInsert: Meteor.userId() };
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
createdOn: {
type: Date,
// defaultValue: new Date(),
autoValue: function () {
if (this.isInsert) {
return new Date();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
purchaseOrderNo: {
type: String,
autoValue: function () {
if (this.isInsert) {
return PurchasesAPI.newPurchaseOrder();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
}
},
orderedDate: {
type: Date,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
supplier: {
type: String,
defaultValue: "Not Specified"
},
material: {
type: String,
autoform: {
afFieldInput: {
type: 'autocomplete-input',
placeholder: 'Material',
settings: function () {
return {
position: "top",
limit: 20,
rules: [
{
collection: Materials,
field: "material",
matchAll: true,
template: Template.Purchasing_material_item
}
]
}
}
}
}
},
orderConfirmationDate: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
estimatedTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
actualTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
}
});
HTML
{{> quickForm schema=createPurchaseSchema id="createNewPurchase" type="normal" buttonContent="false"}}
按下提交按钮后,我得到:
VM32227 aldeed_autoform.js:7702 Uncaught TypeError: ec.invalidKeys is not a function
at failedValidation (VM32227 aldeed_autoform.js:7702)
at Object.autoFormSubmitHandler (VM32227 aldeed_autoform.js:7836)
at VM32193 blaze.js:3775
at Function.Template._withTemplateInstanceFunc (VM32193 blaze.js:3744)
at Blaze.View.<anonymous> (VM32193 blaze.js:3774)
at VM32193 blaze.js:2617
at Object.Blaze._withCurrentView (VM32193 blaze.js:2271)
at Blaze._DOMRange.<anonymous> (VM32193 blaze.js:2616)
at HTMLFormElement.<anonymous> (VM32193 blaze.js:863)
at HTMLDivElement.dispatch (VM32156 modules.js:17882)
failedValidation @ VM32227 aldeed_autoform.js:7702
autoFormSubmitHandler @ VM32227 aldeed_autoform.js:7836
(anonymous) @ VM32193 blaze.js:3775
Template._withTemplateInstanceFunc @ VM32193 blaze.js:3744
(anonymous) @ VM32193 blaze.js:3774
(anonymous) @ VM32193 blaze.js:2617
Blaze._withCurrentView @ VM32193 blaze.js:2271
(anonymous) @ VM32193 blaze.js:2616
(anonymous) @ VM32193 blaze.js:863
dispatch @ VM32156 modules.js:17882
elemData.handle @ VM32156 modules.js:17690
Navigated to http://localhost:3000/purchasing/purchases/new-purchase?purchaseOrderNo=&orderedDate=&supplier=Not+Specified&material=&orderConfirmationDate=&estimatedTimeOfArrival=&actualTimeOfArrival=
我的钩子也没有触发,如果我尝试用 Template.Purchasing_new_purchase_form.events({ 'submit' : function() {...} })
覆盖提交按钮它也不起作用。
如果有人能帮我解决这个问题,我将不胜感激,并希望我可以开始在我的应用程序中使用更多自动表单,但目前我只是从头开始编写表单,然后应用手动验证而不进行反应式验证。这是 AutoForm 固有的问题还是我做错了什么?
已成功解决此问题!
我将 Autoform to 6.3.0
、Simple-schema
更新到 > 1.4,删除了所有其他相关的自动表单包,如 autocomplete
和 autoform-materialize
,并开始工作。
在我的整个应用程序中,我多次尝试使用自动表单,但我认为自动表单和 MaterializeCSS 模板之间存在真正的冲突。无论如何,我一直收到以下错误:
架构:
import SimpleSchema from 'simpl-schema';
import { Materials } from '/imports/api/materials/materials.js';
import { PurchasesAPI } from '/imports/api/purchases/api.js';
import '../../ui/components/purchasing/purchasing-autocomplete-list-template.html';
export const purchasingCreatePurchaseSchema = new SimpleSchema({
userId: {
type: String,
autoValue: function () {
if (this.isInsert) {
console.log("this is insert");
console.log(Meteor.userId());
return Meteor.userId();
} else if (this.isUpsert) {
return { $setOnInsert: Meteor.userId() };
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
createdOn: {
type: Date,
// defaultValue: new Date(),
autoValue: function () {
if (this.isInsert) {
return new Date();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
},
autoform: {
omit: true
}
},
purchaseOrderNo: {
type: String,
autoValue: function () {
if (this.isInsert) {
return PurchasesAPI.newPurchaseOrder();
}
this.unset(); // Prevent user from supplying their own value
return undefined;
}
},
orderedDate: {
type: Date,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
supplier: {
type: String,
defaultValue: "Not Specified"
},
material: {
type: String,
autoform: {
afFieldInput: {
type: 'autocomplete-input',
placeholder: 'Material',
settings: function () {
return {
position: "top",
limit: 20,
rules: [
{
collection: Materials,
field: "material",
matchAll: true,
template: Template.Purchasing_material_item
}
]
}
}
}
}
},
orderConfirmationDate: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
estimatedTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
},
actualTimeOfArrival: {
type: Date,
optional: true,
autoform: {
afFieldInput: {
class: 'datepicker'
}
}
}
});
HTML
{{> quickForm schema=createPurchaseSchema id="createNewPurchase" type="normal" buttonContent="false"}}
按下提交按钮后,我得到:
VM32227 aldeed_autoform.js:7702 Uncaught TypeError: ec.invalidKeys is not a function
at failedValidation (VM32227 aldeed_autoform.js:7702)
at Object.autoFormSubmitHandler (VM32227 aldeed_autoform.js:7836)
at VM32193 blaze.js:3775
at Function.Template._withTemplateInstanceFunc (VM32193 blaze.js:3744)
at Blaze.View.<anonymous> (VM32193 blaze.js:3774)
at VM32193 blaze.js:2617
at Object.Blaze._withCurrentView (VM32193 blaze.js:2271)
at Blaze._DOMRange.<anonymous> (VM32193 blaze.js:2616)
at HTMLFormElement.<anonymous> (VM32193 blaze.js:863)
at HTMLDivElement.dispatch (VM32156 modules.js:17882)
failedValidation @ VM32227 aldeed_autoform.js:7702
autoFormSubmitHandler @ VM32227 aldeed_autoform.js:7836
(anonymous) @ VM32193 blaze.js:3775
Template._withTemplateInstanceFunc @ VM32193 blaze.js:3744
(anonymous) @ VM32193 blaze.js:3774
(anonymous) @ VM32193 blaze.js:2617
Blaze._withCurrentView @ VM32193 blaze.js:2271
(anonymous) @ VM32193 blaze.js:2616
(anonymous) @ VM32193 blaze.js:863
dispatch @ VM32156 modules.js:17882
elemData.handle @ VM32156 modules.js:17690
Navigated to http://localhost:3000/purchasing/purchases/new-purchase?purchaseOrderNo=&orderedDate=&supplier=Not+Specified&material=&orderConfirmationDate=&estimatedTimeOfArrival=&actualTimeOfArrival=
我的钩子也没有触发,如果我尝试用 Template.Purchasing_new_purchase_form.events({ 'submit' : function() {...} })
覆盖提交按钮它也不起作用。
如果有人能帮我解决这个问题,我将不胜感激,并希望我可以开始在我的应用程序中使用更多自动表单,但目前我只是从头开始编写表单,然后应用手动验证而不进行反应式验证。这是 AutoForm 固有的问题还是我做错了什么?
已成功解决此问题!
我将 Autoform to 6.3.0
、Simple-schema
更新到 > 1.4,删除了所有其他相关的自动表单包,如 autocomplete
和 autoform-materialize
,并开始工作。