【问题标题】:Save a class instance on a Meteor reactive var在 Meteor 反应变量上保存一个类实例
【发布时间】:2018-02-18 12:58:29
【问题描述】:

我用一些方法创建了一个 Helper 类。所以我想把这个帮助类实例存储在一个反应​​变量中,以便在 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
    }

}

这是我的简单课程。现在是模板 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 在 each 循环中的 Template 中的访问是空的。在将其打印为 JSON 时,我只看到字段,没有作为实例的迹象。

好的,如果我使用提供原语的方法一切正常。但这提供了一个对象,我如何访问它们?

【问题讨论】:

  • 请添加一些代码来显示您已经尝试解决问题的方法。是否发生任何错误?请也添加它们。
  • 是的,有可能
  • StackOverflow 不是免费的代码编写服务,希望您能try to solve your own problem first。请更新您的问题以显示您已经尝试过的内容,并在minimal, complete, and verifiable example 中展示您面临的特定问题。欲了解更多信息,请参阅how to ask good questions,并拨打tour of the site
  • 我从没想过有人会为我编写代码。这是一个问题。也许他们在某个地方(我没有找到)一个与我的问题完全相同的页面,这里的任何人都知道。感谢您的回答

标签: meteor


【解决方案1】:

我刚刚用您的代码对此进行了测试,一切正常:

<template name="hello">
  <ul>
    {{#each article in articleArray}}
      <li>{{article.articleObj.name}}</li>
    {{/each}}
  </ul>
</template>

当然,我必须做出一些假设,比如每个文章对象都会有一个顶级名称属性。

我什至测试了将 ReactiveArray 设为全局并添加新实例并修改底层 ReactiveObject。

您可以在这里查看我的示例:https://github.com/coagmano/stackoverflow-48810966

【讨论】:

  • 嗨,是的,这对我也有用!一切都好。但是如果我有一个带参数的函数 getName 并且我的返回是一个对象,我如何访问它们?
  • 示例:{{ (article.articleObj.getName "param").getPlain }}
  • 好吧,我想通了! {{#with function}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多