流星中的动态页面渲染

时间:2014-10-10 07:24:37

标签: meteor iron-router meteor-blaze

页面渲染不适用于铁:路由器请帮助我。修改不使用代码。请找到下面附带的代码。我们是用户流星添加铁:路由器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");
});

2 个答案:

答案 0 :(得分:1)

目前还不清楚你想要达到的目标 我建议您首先阅读Meteor Docs作为首发。

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

首先,您不需要<head><body>标签 然后,您可以在客户端文件夹中创建一个布局模板,您可以在其中设置要渲染的播放器模板,也可以在页面中添加页眉,页脚等。

的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
将播放器添加到Players集合

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


routrer.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 ,请遵循我为此版本提供的符号。

答案 1 :(得分:0)

很抱歉直言不讳,但你真的需要阅读this

在非常非常顶级的地方说:

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

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

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