【问题标题】:Can I use a unique variable in Meteor template each time?我可以每次在 Meteor 模板中使用唯一变量吗?
【发布时间】:2017-02-03 04:52:48
【问题描述】:

在另一个模板中,我在循环中使用“articleSingle”模板。

{{#each articles}}
    {{> articleSingle}}
{{/each}}

articleSingle 模板有这个:

let publishTitleNonReactive;

Template.articleSingle.onCreated(function() {

    this.autorun(function() {
        if (Template.currentData() && !publishTitleNonReactive) {
            publishTitleNonReactive = Template.currentData().publishTitle;
        }
    });

});

我希望这个publishTitleNonReactive var 是唯一的,或者至少在本地范围内是唯一的,这样每次使用这个模板时我都可以有不同的值。

知道怎么去那里吗?

更新:

我正在尝试在一个帮助器中使用该变量,它现在是反应式的。因此,每当模板数据更新时,它就会变成未定义的。

我在“articleSingle”模板中使用的助手:

titleHybrid: function(){
    return this.publishTitle;
}

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    您可以使用this in onCreated 将属性存储在模板实例中:

    Template.articleSingle.onCreated(function () {
      this.publishTitleNonReactive = …
      …
    });
    

    【讨论】:

    • 感谢您的回答。创建模板后,属性似乎运行良好。但是,我正在尝试在现在是反应性的助手中使用该变量。因此,每当它更新任何模板数据时,它都会变得未定义。有什么帮助吗?
    • 你能把那个助手的代码添加到你的问题中吗?
    【解决方案2】:

    我想我明白你在问什么;每次迭代就不能把文章数据往下推吗?

    {{#each article in articles}}
        {{> articleSingle article=article}}
    {{/each}}
    
    Template.articleSingle.onCreated(function() {
        let publishTitle = Template.currentData().article.publishTitle;
        this.publishTitle = new ReactiveVar(publishTitle);
    });
    

    或:

    {{#each article in articles}}
        {{> articleSingle publishTitle=article.publishTitle}}
    {{/each}}
    
    Template.articleSingle.onCreated(function() {
        let publishTitle = Template.currentData().publishTitle;
        this.publishTitle = new ReactiveVar(publishTitle);
    });
    

    从那里您可以将标题存储在反应变量中以在帮助程序中使用它。您以模板的所有实例都共享它的方式保存它。

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 2012-10-15
      • 2013-08-09
      • 1970-01-01
      • 2012-07-20
      • 2019-10-29
      • 2011-01-14
      • 1970-01-01
      相关资源
      最近更新 更多