如何在famousEvents处理函数中获取数据上下文

时间:2015-03-06 21:30:26

标签: javascript meteor famo.us

我正在使用meteor-famous-views将famo.us集成到我的流星应用程序中。我得到了这个简单的模板。

{{#ContainerSurface size="[undefined,250]" translate="[0,172]" class="languageSelectItems"}}
    {{#Scrollview size="[undefined,true]"}}
      {{#famousEach languages}}
        {{>Surface template="languageSelectItem" size="[undefined,50]" class="languageSelectItem"}}
      {{/famousEach}}        
    {{/Scrollview}}
  {{/ContainerSurface}}

这个相应的Javascript事件处理函数。

Template.languageSelectItem.famousEvents({
  'click': function(e, fview){
    var lang = Blaze.getData(fview.blazeView);
    Session.set('selectedLanguage', lang);
    $('.languageSelectItems').hide();
  }
});

我的问题很简单,如何访问数据上下文?

Blaze.getData(fview.blazeView);

建议哪个是正确的解决方案:

https://github.com/gadicc/meteor-famous-views/issues/100

此调用返回对着名对象的引用,例如表面等,但我需要相关的“语言”对象。

我正在使用meteor-famous-views版本0.1.15。

编辑:使用fview-lab.meteor.com

演示此组件

https://fview-lab.meteor.com/pads/53sHoTJ9JHDFbx5Qt/1

1 个答案:

答案 0 :(得分:1)

找到了一个可行的解决方案,但不确定这是否是正确的方法。

技巧是在FamousEach循环中Surface的数据参数。

{{>Surface  template="languageSelectItem" 
                      size="[undefined,50]" 
                      class="languageSelectItem"
                      data=this}} <--- add a reference

我改编了fview-lab演示:

https://fview-lab.meteor.com/pads/53sHoTJ9JHDFbx5Qt/1