流星中的动态页面渲染

Posted

技术标签:

【中文标题】流星中的动态页面渲染【英文标题】: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");
);

【问题讨论】:

【参考方案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

以上是关于流星中的动态页面渲染的主要内容,如果未能解决你的问题,请参考以下文章

Class 17 - 2 动态渲染页面爬取 — Splash

JavaScript 动态渲染页面爬取 —— 基于 Splash

JavaScript 动态渲染页面爬取 —— 基于 Splash

python--Selenium(动态渲染页面爬取)

PHP 爬虫体验 - 使用PHP + puppeteer爬取js动态渲染的页面内容

fastadmin filedlist动态渲染动态添加的编辑器---编辑页面的优化