将动态数据属性传递到Meteor中的内容块

时间:2016-09-14 18:40:22

标签: meteor meteor-blaze

我在Blaze中有button的动态模板,看起来像这样(简化):

button.html

<template name="Button">
  <button {{attributes}}>
    <span class="button__text">{{> UI.contentBlock}}</span>
  </button>
</template>

button.js

import {Template} from 'meteor/templating';
import cx from 'classnames';

import './button.html';

Template.Button.helpers({
  attributes() {
    const instance = Template.instance();
    let {data} = instance;

    return {
      disabled: data.disabled,
      'class': cx('button', data.class)
    };
  }
});

尝试设置动态数据属性:

{{#Button class="js-add-contact" data-phase-index={{index}}}}Add Contact{{/Button}}

index(我们假设它只是一个简单的动态字符串)插入data-phase-index会引发错误:内容块不期望{{。我不确定将动态数据导入模板的另一种方法。还有一个问题是在data-帮助程序中获取Button识别的attributes()属性。任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

只需data-phase-index=index即可。

由于您已经在Button模板调用的双花括号中,Meteor知道它将获得解释值。例如,请注意您必须在class="js-add-contact"中的字符串周围使用引号。

像往常一样,Meteor将尝试从帮助者或数据上下文中解释index