Fre*_*cer 5 javascript node.js meteor
在Meteor中,我们通常将javascript函数附加到模板.我们在哪里放置标准的javascript函数?
例如,在我的一个应用程序中,我有一个UserInfo.js文件,该文件有一堆javascript函数,用于处理登录和获取用户信息的用户.
以下是UserInfo.js中的两个函数
文件位于client/scripts文件夹中:
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;
}
};
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序并从浏览器控制台调用isAdmin()时,它说:
ReferenceError: isAdmin is not defined
当我将javascript文件放在客户端/兼容性文件夹下时,问题似乎暂时得到解决,但现在问题已经重新出现了.我唯一记得改变的是打电话>> Meteor Reset
我认为当我使用coffeescript时会出现问题.当我将我的coffeescript文件转换为js文件时,一切似乎都有效.
您需要将 CoffeeScript 变量声明为全局变量@:
@isAdmin = user -> ...
Run Code Online (Sandbox Code Playgroud)
这是由于 Meteor 变量遮蔽如何与 CoffeeScript 自动变量声明结合使用。
默认情况下,Coffeescript 会自行进行“智能”变量声明 - 基本上是将其放置var variableName在 javascript 中变量可见的第一个位置。在您的情况下,这会导致在 js 中isAdmin声明var,因此它的范围仅限于该文件。
使用@char 通过将变量绑定到this,global或windowobject 来取代此默认行为。
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |