在 Meteor 反应变量上保存一个 class 实例
Save a class instance on a Meteor reactive var
我用一些方法创建了一个助手 class。所以我想将这个助手 class 实例存储在一个反应性变量中,以便在 html 模板中访问这个实例。
这可能吗?
export class APIArticle {
constructor(articleObj){
if( !_.isUndefined(articleObj) && !_.isNull(articleObj) && _.isObject(articleObj) ){
this.articleObj = new ReactiveObject(articleObj);
} else {
throw "impossible creation!!!! Article-Object or ArticleId is required!";
}
}
getCurrencyCode() {
if( _.isUndefined(this.currencyCode) || _.isNull(this.currencyCode) ){
try{
this.currencyCode = this.articleObj.sellPrice[0].money.currencyCode.toUpperCase();
}catch(e){
this.currencyCode = "EUR";
}
}
return this.currencyCode
}
}
这是我的简单 class。现在模板 Javascript.
Template.philosArticleCarousel.created = function(){
let self = this;
this.articleArray = new ReactiveArray();
Meteor.call("articleList",function(err,succ){
if(!err){
self.articleArray.clear();
_.each(succ,function(i){
let apiArticle = new APIArticle(i);
self.articleArray.push(apiArticle);
});
}
});
};
Template.philosArticleCarousel.helpers({
articleArray:() => { return Template.instance().articleArray.list(); }
});
this.getCurrencyCode 的每个循环中的模板中的访问为空。在将其打印为 JSON 时,我只看到字段,没有任何实例的迹象。
好吧,如果我使用一种传递原语的方法,一切都会好起来的。但这提供了一个对象,我如何访问它们?
我刚刚用您的代码对此进行了测试,一切正常:
<template name="hello">
<ul>
{{#each article in articleArray}}
<li>{{article.articleObj.name}}</li>
{{/each}}
</ul>
</template>
当然我不得不做出一些假设,比如每个文章对象都有一个顶级名称 属性。
我什至测试了将 ReactiveArray 设为全局并添加新实例并修改底层 ReactiveObject。
你可以在这里看看我的例子:https://github.com/coagmano/Whosebug-48810966
我用一些方法创建了一个助手 class。所以我想将这个助手 class 实例存储在一个反应性变量中,以便在 html 模板中访问这个实例。 这可能吗?
export class APIArticle {
constructor(articleObj){
if( !_.isUndefined(articleObj) && !_.isNull(articleObj) && _.isObject(articleObj) ){
this.articleObj = new ReactiveObject(articleObj);
} else {
throw "impossible creation!!!! Article-Object or ArticleId is required!";
}
}
getCurrencyCode() {
if( _.isUndefined(this.currencyCode) || _.isNull(this.currencyCode) ){
try{
this.currencyCode = this.articleObj.sellPrice[0].money.currencyCode.toUpperCase();
}catch(e){
this.currencyCode = "EUR";
}
}
return this.currencyCode
}
}
这是我的简单 class。现在模板 Javascript.
Template.philosArticleCarousel.created = function(){
let self = this;
this.articleArray = new ReactiveArray();
Meteor.call("articleList",function(err,succ){
if(!err){
self.articleArray.clear();
_.each(succ,function(i){
let apiArticle = new APIArticle(i);
self.articleArray.push(apiArticle);
});
}
});
};
Template.philosArticleCarousel.helpers({
articleArray:() => { return Template.instance().articleArray.list(); }
});
this.getCurrencyCode 的每个循环中的模板中的访问为空。在将其打印为 JSON 时,我只看到字段,没有任何实例的迹象。
好吧,如果我使用一种传递原语的方法,一切都会好起来的。但这提供了一个对象,我如何访问它们?
我刚刚用您的代码对此进行了测试,一切正常:
<template name="hello">
<ul>
{{#each article in articleArray}}
<li>{{article.articleObj.name}}</li>
{{/each}}
</ul>
</template>
当然我不得不做出一些假设,比如每个文章对象都有一个顶级名称 属性。
我什至测试了将 ReactiveArray 设为全局并添加新实例并修改底层 ReactiveObject。
你可以在这里看看我的例子:https://github.com/coagmano/Whosebug-48810966