【问题标题】:Dynamic page rendering in meteor流星中的动态页面渲染
【发布时间】:2014-12-05 07:18:15
【问题描述】:

页面渲染不适用于 Iron:router 请帮助我。渲染不适用于代码。请找到下面的附加代码。我们是用户流星添加铁:路由器 0.9.4。我们使用流星 0.9.3.1 .页面渲染不工作

<head>
</head>
<body >
    <div>
        {{> players}}
    </div>
</body>

<template name ="editform">
  <div class="container">
    <div class="row" style="border-bottom: 5px solid gray;">
        <h2>Profile</h2>
    </div>
    <div id="wrapper">
        <table>
            <tr>
               <td>First name:</td>
               <td><input type="text" name="pff_name"/></td>
            </tr>
            <tr>
               <td>Last name:</td>
               <td><input type="text" name="pfl_name"/></td>
            </tr>
            <tr>
               <td>Email Address:</td>
               <td><input type="email" name="pfemail"/></td>
            </tr>
            <tr>
               <td>Phone number:</td>
               <td><input type="text" name="pfname"/></td>
            </tr>
            <tr>
               <td>Company or Organization:</td>
               <td><input type="url" name="pfname"/></td>
            </tr>
        </table>        
    </div>
  </div>
</template>

<template name="players">
     <div>
         <table class="table table-condensed table-striped table-bordered table-hover no-margin">
             <tr>
                <th>IP</th>             
                <th></th>
            </tr>
            {{#each scorers}}
            <tr>
                <td><a href="{{ pathFor  'editform' }}" >{{ ip }}</a></td>              
                <td></td>
            </tr>
           {{/each}}
       </table>
    </div>
</template>

这个 router.js

Router.route("/", function() {
    this.render("route");
});

【问题讨论】:

    标签: meteor iron-router meteor-blaze


    【解决方案1】:

    对不起,直言不讳,但您确实需要阅读this

    在最上面写着:

    Router.route('/', function () {
      this.render('Home');
    });
    

    当用户导航到url“/”时,上面的路由会将名为“Home”的模板渲染到页面上。

    您的路由器中有this.render("route"); 行,但没有名为“route”的模板。

    【讨论】:

    • 对不起,这是正确的。 this.render("editform"). 请帮帮我。提前致谢。
    • 对不起,这是正确的。 this.render("editform"). 请帮帮我。提前致谢。@richsilv
    【解决方案2】:

    目前尚不清楚您要达到的目标。
    我建议您从阅读Meteor Docs 开始。

    对于像这样的简单应用,您可以使用如下结构:
    /client(客户端代码文件)
    /server(服务器端代码文件)
    collections.js
    Check out a good way of structuring your app here.

    首先,这里不需要&lt;head&gt;&lt;body&gt; 标签。
    然后,您可以在客户端文件夹中创建一个布局模板,您可以在其中设置要呈现的播放器模板,还可以将页眉、页脚等添加到您的页面。

    layout.html

    <template name="layout">
        {{>players}}
    </template>
    


    那么你还需要一个客户端文件夹中的播放器模板。 我将继续在这里制作一个简单的例子来帮助你。收集用户输入值,插入到 Players 集合 中,并使用 {{players}} 帮助器在 div.result 中为该集合中的每个玩家创建一个新表行.

    players.html

    <template name="players">
        <div class="container">
            <div class="row" style="border-bottom: 5px solid gray;">
                <h2>Profile</h2>
            </div>
            <div id="wrapper">
                <table>
                    <tr>
                        <td>First name:</td>
                        <td><input type="text" id="pff_name" /></td>
                    </tr>
                    <tr>
                        <td>Last name:</td>
                        <td><input type="text" id="pfl_name" /></td>
                    </tr>
                </table>
                <button class="insert">Submit</button>
            </div><br/>
            <div id="result">
              <table class="table table-condensed table-striped table-bordered table-hover no-margin">
                <tr>
                  <th>First Name</th>
                  <th>Last Name</th>
                </tr>
                {{#each players}}
                <tr>
                    <td>{{firstname}}</td>
                    <td>{{lastname}}</td>
                </tr>
                {{/each}}
              </table>
            </div>
        </div>
    </template>
    



    collections.js
    创建一个名为 Players 的新 Meteor Collection,它将存储所有添加的文档。

    Players = new Meteor.Collection("players");
    


    players.js
    在这里,players 助手将返回一个光标,并调用一个名为 addPlayer 的创建 Meteor 方法。

    Template.players.helpers({
        players: function() {
            return Players.find();
        }
    });
    
    Template.players.events({
        'click .insert': function(event, template) {
            var first = $('#pff_name').val();
            var last = $('#pfl_name').val();
            if(first !== "" && last !== "") {
                Meteor.call("addPlayer", first, last);
            }
            $('#pff_name').val("");
            $('#pfl_name').val("");
        }
    });
    


    server.js
    将播放器添加到播放器集合

    Meteor.startup(function () {
        Meteor.methods({
            addPlayer: function(fname, lname) {
                Players.insert({firstname: fname, lastname: lname});
            }
        })
    });
    


    routerer.js
    告诉 Iron Router 渲染玩家模板

    Router.map(function () {
        this.route('players', {
            path: '/',
            template: 'players',
            layoutTemplate: 'layout'
        })
    });
    



    编辑: 您使用的是 IronRouter 0.9.4 版,您的路由是为新版本定义的。
    将 IronRouter 更新为 iron:router@1.0.0-pre3 遵循我为此版本提供的符号。

    【讨论】:

    • 谢谢你的回复其实我需要在meteor.@durrrr中渲染页面
    • 我没有关注。这是流星。 @user2740350
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多