'这' Meteor事件中的上下文是空对象

时间:2015-09-08 19:02:34

标签: meteor

模板工作正常(就显示的数据而言),但事件并非如此。特别奇怪,因为我有一个不同的模板,几乎完全相同的代码。

<template name="profile_sidebar">
    {{#if opened}}
        {{> profile_sidebar_contents}}
    {{/if}}
</template>

<template name="profile_sidebar_contents">
    {{#if dataReady}}
        {{#unless equalsCurrentUsername profile.login}}
           <span>
             <a class="message-user"><i class="ion-chatbox"></i> Message</a>
           </span>
        {{/unless}}
   {{/if}}
</template>

Template.profile_sidebar_contents.events({
    'click .message-user': function(e,t){
        // this is {}
        // t.data is null
        Session.set('selectedConversation', this._id);
        Router.go('/messages');
    }
});

谢谢!

1 个答案:

答案 0 :(得分:0)

找到解决方案!

我将整个模板包装在{{#with profile}} ... {{/ with}}块中,然后添加了我需要在帮助器中返回的配置文件对象中的数据。似乎事件的上下文是空对象,因为事件目标不在范围内。

详见

我假设上下文默认为一个对象,其中包含所有助手的字段。防爆。我有

Template.profile_sidebar_contents.helpers({
   profile: function(){ return something },
   id: function() {return somethingelse }
});

我希望这个的上下文是{profile:something,id:somethingelse} 但似乎没有完成,上下文是空的。我把它移到了

Template.profile_sidebar_contents.helpers({
       profile: function(){ return {profile:something, id:somethingelse} }
});

然后设置{{#with profile}} ... {{/ with}}并且可以访问配置文件帮助程序返回的对象,通过this.id可以通过this.id检索id.profile