【问题标题】:Meteor dynamic category list流星动态分类列表
【发布时间】:2015-10-03 00:23:05
【问题描述】:

我想做以下事情。我想创建一个类别页面,将每个类别加载到图片上。然后,当用户单击一个类别时,该参数将显示在 url 上,它将根据该类别在数据库中搜索照片。我现在将演示我拥有的代码。

类别 HTML 文件:

<template name="categories">
    <div class="text-center light-container" id="categories-section">
        <h1>Categories</h1>
        <hr/>
        {{#each categories}}
            <div class="image-container">
                <a href="{{pathFor route='categoryPage'}}">
                    <img class="freezeframe pics" src="images/app/sphere.jpg"/>
                </a>
                <h2><span>{{categories}}</span></h2>
            </div>
        {{/each}}
    </div>
</template>

分类 JS 文件:

var categoryList = ['actions', 'animals', 'anime', 'art/design', 'cartoons/comics', 'celebrities',
 'Emotions', 'Food/Drink', 'Games', 'History', 'Holidays', 'Memes', 'Movies', 'Music', 'Nature', 'News/Politics',
 'Science', 'Sports', 'Technology', 'TV'];

Template.categories.helpers({
    'categories':function(){
        for(var i = 0; i < categoryList.length; i++){
            console.log(categoryList[i]);
            return categoryList[i];
        }
    }
});

路由器 JS 文件:

Router.route('/categories', {
    name: 'categories',
    template: 'categories',
    fastRender: true
});
Router.route('/categories/:category', {
    name: 'categoryPage',
    template: 'categoryPage',
    data: function(){
        var category = this.params.category;
        return GifsCollection.find({category: category});
    },
    fastRender: true
});

CategoryPage JS:

Template.categoryPage.helpers({
    // Load 16 most recent ones
    // When down arrow is click load another 16 more gifs
    gifs: function() {
        var category = this.params.category;
        return GifsCollection.find({category: category}, {fields: {_id: 1, image: 1} });
    }
});

运行以下代码不会让我到任何地方。我不确定要走哪条路。我可以创建一个“类别”集合并将助手加载到那里,或者我可以使用会话?但我倾向于创建类别集合,但我很确定有一种更有效的方法。

任何反馈和代码帮助将不胜感激!!!

【问题讨论】:

  • return 在分类助手中应该做什么?这将简单地返回categoryList[0]。我想你想用 return categoryList; 替换那个 for 循环。
  • 另外,你问的不是很清楚。这段代码不起作用吗?您在寻求帮助调试吗?这只是为了获得有关代码设计的建议吗?
  • 嘿@ChristianFritz 感谢您的回复。基本上我要做的是将变量“categoryList”加载到每张图片上。因此,一张图片的标题为“动作”,下一张为“冒险”,依此类推。我做了你所说的,只返回了 categoryList 并且它有效,但它正在为每张图片加载整个列表。
  • 好的 nvm 我已经解决了。我将数组更改为 json 对象。

标签: javascript mongodb meteor iron-router


【解决方案1】:

您有两个小错误。我们已经在 cmets 中讨论过一个关于助手的问题。另一个是你如何使用#each 循环:在其中你可以参考this 来获取你的类别的字符串。

分类 HTML 文件:

<template name="categories">
    <div class="text-center light-container" id="categories-section">
        <h1>Categories</h1>
        <hr/>
        {{#each categories}}
            <div class="image-container">
                <a href="/categories/{{this}}">
                    <img class="freezeframe pics" src="images/app/sphere.jpg"/>
                </a>
                <h2><span>{{this}}</span></h2>
            </div>
        {{/each}}
    </div>
</template>

分类 JS 文件:

var categoryList = ['actions', 'animals', 'anime', 'art/design', 'cartoons/comics', 'celebrities',
 'Emotions', 'Food/Drink', 'Games', 'History', 'Holidays', 'Memes', 'Movies', 'Music', 'Nature', 'News/Politics',
 'Science', 'Sports', 'Technology', 'TV'];

Template.categories.helpers({
    'categories':function(){
        return categoryList;
    }
});

【讨论】:

  • 谢谢,这比我实现的 json 对象要好得多。然而,我现在遇到了另一个问题。我正在尝试使用铁路由器传递数据。我想将类别名称添加到 url 上,当用户登陆类别页面时,将加载该类别中的相应照片。我将发布一个链接,其中包含我为页面“categoryPage”拥有的所有代码。
  • 这是我目前面临的问题的新链接。 stackoverflow.com/questions/32911969/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多