首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Meteor应用程序中放置javascript函数的位置

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

Stack Overflow用户
提问于 2013-10-06 02:14:41
回答 2查看 1.5K关注 0票数 5

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

例如,在我的一个应用程序中,我有一个UserInfo.js文件,它有许多javascript函数来处理登录和获取用户信息的用户。

下面是我在UserInfo.js中的两个函数

文件位于client/scripts文件夹中:

代码语言:javascript
代码运行次数:0
运行
复制
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文件放在client/compatibility文件夹下时,问题似乎暂时得到了解决,但现在问题又浮出水面。我唯一记得的改变就是给>> Meteor Reset打电话

更多信息:

我认为当我使用coffeescript时,问题就出现了。当我将coffeescript文件转换为js文件时,一切似乎都正常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 04:01:04

您需要使用@将coffeescript变量声明为全局变量

代码语言:javascript
代码运行次数:0
运行
复制
@isAdmin = user -> ...

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2013-10-06 16:19:28

您的代码是正确的,这可能是一个负荷顺序问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19204717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档