javascript - 客户端的meteorjs全局函数

标签 javascript meteor

我尝试为我的 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/

相关文章:

node.js - Meteor 模板助手有条件地始终返回 false

twitter-bootstrap - Bootstrap 4 卡没有响应,它只是将其对齐为 1 直行

javascript - 如何在Meteor js中显示json的每一项?

javascript - 事件未在 backbone.js View 中触发

javascript - 在循环中替换数组的变量

javascript - 导出单个或多个类型

javascript - 将变量设置为未定义时,Microsoft JScript 抛出 'variable' 是未定义错误

cordova - 在 meteor Cordova 应用程序中播放本地音频

javascript - 如何使用 meteor 将 PDF 或图像文件保存到收藏夹中?

javascript - 鼠标点击页面上的其他地方(不是在特定的 div 上)