我尝试为我的 meteor 应用程序定义一个验证函数。我必须在客户端验证后期数据,但也要在服务器端验证以防止操纵。
因此,我在目录 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/methods/中的方法:
Meteor.methods({
userRegisterFormPost : function(attr) {
var validate = new Validation(attr);
}
});
这不起作用,因为“验证未定义”。也许我对meteorjs的架构的理解不正确,所以也许你可以告诉我如何解决我想做的这个简单的步骤?
最佳答案
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;
})();
关于javascript - 客户端的meteorjs全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493566/