在 Meteor 应用程序中放置 JavaScript 函数的位置



在Meteor中,我们通常将javascript函数附加到模板上。我们在哪里放置标准的javascript函数?

例如,在我的一个应用程序中,我有一个UserInfo.js文件,其中包含一堆javascript函数,用于处理用户登录和获取用户信息。

以下是我在用户信息中的两个功能.js

文件位于客户端/脚本文件夹中:

isAdminById = function(userId) {
  var user;
  user = Meteor.users.findOne(userId);
  return user && isAdmin(user);
};
isAdmin = function(user) {
  if (!user || typeof user === 'undefined') {
    return false;
  } else {
    return !!user.isAdmin;
  }
};

当我运行应用程序并从浏览器控制台调用isAdmin()时,它说:

ReferenceError: isAdmin is not defined

----编辑----

当我将javascript文件放在客户端/兼容性文件夹下时,问题似乎暂时解决了,但现在问题又出现了。我记得唯一改变的是打电话给>> Meteor Reset

更多信息:

我认为当我使用咖啡脚本时会出现问题。当我将我的咖啡脚本文件转换为 js 文件时,一切似乎都正常。

你需要用 @ 将 coffeescript 变量声明为全局变量:

@isAdmin = user -> ...

这是由于 Meteor 变量阴影与 coffeescript 自动变量声明相关的工作方式。

默认情况下,Coffeescript 自己进行"智能"变量声明 - 基本上是将var variableName放在 javascript 中变量可见的第一位。在您的情况下,这会导致isAdmin由 js 中的 var 声明,因此它的作用域为文件。

使用 char @通过将变量绑定到thisglobalwindow对象来取代此默认行为。

您的代码是正确的,这可能是加载顺序问题。

最新更新