Javascript 在meteor包中创建其他地方可以依赖的变量的正确方法是什么?
我正在构建一个meteor包(主要供我自己使用),我想让它公开一些只读属性,包外的计算可以依赖这些属性。我的包的主js文件大致如下所示:Javascript 在meteor包中创建其他地方可以依赖的变量的正确方法是什么?,javascript,meteor,Javascript,Meteor,我正在构建一个meteor包(主要供我自己使用),我想让它公开一些只读属性,包外的计算可以依赖这些属性。我的包的主js文件大致如下所示: MyPackage = (function() { var prop1, prop2, myPackage = {}; function setProp1(val) { prop1 = val; } function setProp2(val) { prop2 = val; } myPackage.publicMethod = functi
MyPackage = (function() {
var prop1, prop2, myPackage = {};
function setProp1(val) { prop1 = val; }
function setProp2(val) { prop2 = val; }
myPackage.publicMethod = function () {
// This might change prop1 and prop2 via the setters as a side effect
};
myPackage.getProp1 = function() { return prop1; };
myPackage.getProp2 = function() { return prop2; };
return myPackage;
}();
MyPackage对象是使用api.export导出的,它的功能类似于一种模块
我希望能够在某个模板的某个地方定义一个helper函数,该函数对prop1和prop2的值的更改做出反应,但仍然在getter方法getProp1和getProp2后面保持它们的隔离。最好的方法是什么
我已经通读了--我是否只需要使用depend()和changed()来构建我的getter和内部setter,还是package.js文件中必须发生某些事情?是的,只需使用
Deps.Dependency
对象:
MyPackage = (function() {
var prop1, prop2, myPackage = {};
var prop1Dependency = new Deps.Dependency();
var prop2Dependency = new Deps.Dependency();
function setProp1(val) {
prop1 = val;
prop1Dependency.changed();
}
function setProp2(val) {
// alternatively:
if (prop2 !== val) {
prop2 = val;
prop2Dependency.changed();
}
}
myPackage.publicMethod = function () {
// This might change prop1 and prop2 via the setters as a side effect
};
myPackage.getProp1 = function() {
prop1Dependency.depend();
return prop1;
};
myPackage.getProp2 = function() {
prop2Dependency.depend();
return prop2;
};
return myPackage;
}();
然后,任何调用getter的助手都将隐式地依赖于依赖项,并对通过setter所做的更改作出反应:
UI.registerHelper('prop1', function() {
return MyPackage.getProp1();
});
Template.someTemplate.prop2 = function() {
return MyPackage.getProp2();
};
您可能还需要将其添加到您的on_use
处理程序中的包.js
:
api.use("deps");
这正是我需要的。谢谢