我尝试为我的meteor应用程序定义验证功能。我必须在客户端验证后期数据,但也要在服务器端验证,以防止操作。
因为这个我定义了dir中的函数 myApp / lib / validation /
我在表单上添加了一个提交事件,并调用了meteorjs方法。在这个方法中,我调用我的验证函数。
myApp / lib / validation /中的验证功能:
function Validation (post) {
this.validate = function () {
console.log(post)
return true;
};
};
在myApp / client / manager /中提交活动:
Template.UserRegisterForm.events({
'submit form' : function(e) {
e.preventDefault();
var post = {test : 'success'};
Meteor.call('userRegisterFormPost', post, function(error, postdata) {
});
}
});
myApp / lib / methodes /中的Methode:
Meteor.methods({
userRegisterFormPost : function(attr) {
var validate = new Validation(attr);
}
});
不工作,因为“未定义验证”。也许我不太了解meteorjs的架构,所以也许你可以告诉我如何解决我想做的这个简单的步骤?
答案 0 :(得分:5)
Meteor自动包装IIFE中的文件,因此要在文件之间共享变量/函数,需要在全局范围内声明。试试这个:
Validation = function (post) {
this.validate = function () {
console.log(post)
return true;
};
};
使其更明确的一种方法是将文件包装在您自己的IIFE中,传入全局引用。例如:
(function(global) {
function Validation (post) {}
Validation.prototype.validate = function () {
console.log(post)
return true;
};
global.Validation = Validation;
})(this);
另一个做同样事情的类似模式是:
this.Validation = (function() {
function Validation (post) {}
Validation.prototype.validate = function () {
console.log(post)
return true;
};
return Validation;
})();