从流星中获得订阅的无效价值

时间:2016-03-11 07:09:58

标签: meteor meteor-blaze

在Meteor中,如何从集合中正确返回属性值(在本例中为响应),以便将其发送到数据属性?我尝试了以下功能:

Responses: function(answer) {
    return Responses.findOne({answerId: answer.hash.answer});
}

我在空格键模板中将其称为:

data-selected="{{Responses answer=_id}}

当我看到HTML时,它表示数据选择=“[对象对象]”并不是非常令人惊讶,但我无法弄清楚如何仅从匹配中返回响应值。我可以将.response添加到最后并且它可以工作但是会给出预期的“未定义”错误我知道它不是被动的。我见过人们使用wrapasync,但那是方法,而不是订阅。我应该注意到有几个响应,所以代码必须适合#for循环的答案,其中响应变量分别跟踪每个用户的输入。 谢谢!

1 个答案:

答案 0 :(得分:2)

我不确定数据选择=“{{Responses answer = _id}}”。由于你已经在for循环中,你的html代码可能看起来像这样:

if($(this).css('display') == 'block')
                {
                    $(this).prev('div').removeClass( "down" );
                    $(this).prev('div').addClass( "up" );
                }

在助手功能中,您可以说:

$(document).ready( function() {

            // initialize accordion
            $('#Accordion ul').each( function() {
                var currentURI = window.location.href;
                var links = $('a', this);
                var collapse = true;
                for (var i = 0; i < links.size(); i++) {
                    var elem = links.eq(i);
                    var href = elem.attr('href');
                    var hrefLength = href.length;
                    var compareTo = currentURI.substr(-1*hrefLength);
                    var div = $(this);
                    if (href == compareTo) {
                        collapse = false;
                        $(elem).css({ 'background-color': '#a7a9ac', 'color': '#000' });
                        break;
                    }
                };

                if (collapse) {
                    $(this).hide();
                }

                if($(this).css('display') == 'block')
                {
                    $(this).prev('div').removeClass( "down" );
                    $(this).prev('div').addClass( "up" );
                }

            });

            $("#Accordion").delegate('div', 'click', function() {

                $('#Accordion div').removeClass( "up" );
                $('#Accordion div').addClass( "down" );
                var ul = $(this).next('ul');
                if (ul.is(':visible')) 
                {
                    ul.slideUp(500);
                } 
                else 
                {
                    $('#Accordion ul').not(ul).slideUp(500);
                    ul.slideDown(500);
                    var div = $(this)
                    $( this ).toggleClass( "up" );
                }                   
            });             
        });

当页面仍在加载且数据尚未可用时,myResponse仍为null,因此助手返回空字符串“”。此后不久,数据变得可用,您的数据将被返回,而控制台中没有任何错误。