【问题标题】:How do I resolve this scoping issue?如何解决此范围界定问题?
【发布时间】:2013-12-16 13:15:35
【问题描述】:

所以这是我的问题。

template="one" 下,我从我的DOM 中获取了一个列表,无论出于何种原因,该列表在下一部分中变得不可用。所以我将变量保存到Template.two.value

template="two" 下,我拥有的信息的唯一参考是我之前保存的Template.two.value。现在因为它是一个对象数组(每个对象都有一个名为 song_title 的参数),我想将它打印到一个列表中 - 就像这样:

{{#with value}}
        {{#each .}}
          {{song_title}}
        {{/each}}   
{{/with}}

这给了我一个空列表,表明value 字段为空。

我该如何解决这个问题?

【问题讨论】:

    标签: meteor handlebars.js


    【解决方案1】:

    您为什么使用with 块?你应该能够做到:

    {{#each value}}
      {{song_title}}
    {{/each}}
    

    【讨论】:

    • @Louis93 你能发布更多代码吗?你的问题有点含糊。请发布您的两个模板和助手的代码。
    • @Lous93 #with 创建一个具有不同范围的块。 #each 创建一个重复块,其中每个块的范围由数组中的一个对象定义。如果您有一个对象,请使用#with,如果您有一个数组,请使用#each。我从未见过像现在这样一起使用它们的情况。
    • 嗯,我发现该代码存在一些问题。你有一个Links 集合,但是你使用jQuery 来确定哪些链接是可见的,然后使用一堆findOnes 来构建一个链接列表。为什么不在每个Link 上存储一个visible 属性并使用单个Mongo 选择器来选择可见链接?或者将可见链接 ID 列表存储在 Session 变量中?唯一需要的 jQuery 是动画,甚至可以用 CSS 过渡替换。 Meteor 可以让你用非常非常少的 jQuery 构建非常强大的应用程序。
    • 换句话说,不要使用 HTML 来跟踪数据。使用纯 JavaScript 对象跟踪数据,然后让该数据生成 HTML。
    • 您是否使用可排序的 jQuery UI?您可以使用update 事件回调中的toArray 选项序列化列表ID,并将该列表保存在Session 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多