标签: spacebars

Meteor js:如何设置单选按钮?

我有一组3个单选按钮,我试图在首次呈现页面时设置它:

            <div>
                <div><input id="{{_id}}_undefined" type="radio" name="accepted" {{undecided}}>No Determination</div>
                <div><input id="{{_id}}_true" type="radio" name="accepted" value="true" {{accepted}}>Assign To Researchers</div>
                <div><input id="{{_id}}_false" type="radio" name="accepted" value="false" {{declined}}>Decline</div>
                {{#if declined}}
                <textarea name="declineReason" ></textarea>
                {{/if}}
                <button id="saveChanges" data-research-request-id="{{_id}}">Save Changes</button>
            </div>
Run Code Online (Sandbox Code Playgroud)

与这些助手:

Template.su_researchRequests.helpers({
// This feels so wrong.
accepted: function() {
    return this.accepted === true?'checked':'';
},
declined: function() {
    return this.accepted === false?'checked':'';
},
undecided: function() {
    return this.accepted !== false && this.accepted !==true?'checked':'';
}
});
Run Code Online (Sandbox Code Playgroud)

我尝试使用{'checked':''}或{}返回一个对象

我无法在流星中使用{{#if}},就像我在胡子中一样,可以阻挡已检查的属性.

在渲染页面时设置当前值并不困难.

javascript meteor spacebars

3
推荐指数
1
解决办法
3456
查看次数

如何使用空格键获取第一个集合元素{{#if}}标记?

我试图将第一张图片设置为"活动项目"我是一个Bootstrap Carousel.那么,有没有办法让集合中的第一个元素与其他元素不同?

      {{#each pictures}}
        {{#if @first}}
              <div class="item active">
                 <img src="/pictures/{{fileName}}" alt="" />
            </div>
       {{else}}
          <div class="item">
             <img src="/pictures/{{fileName}}" alt="" />
          </div>
       {{/if}}
     {{/each}}
Run Code Online (Sandbox Code Playgroud)

呈现的页面仅显示{{else}}语句中的内容.尝试过使用{{if @first}},但它对我不起作用.

meteor spacebars

3
推荐指数
1
解决办法
1307
查看次数

使用Spacebars迭代数组

这有点是我上一个问题的第2部分.感谢一些有用的人,我现在有一个看起来像这样的文档:

{ "_id" : "dndsZhRgbPK24n5LD", "createdAt" : ISODate("2014-11-26T16:28:02.655Z"), "data" : { "cat1" : 493.6, "cat2" : 740.4 }, "owner" : "GiWCb8jXbPfzyc5ZF", "text" : "asdf" }
Run Code Online (Sandbox Code Playgroud)

具体来说,我想从dataSpacebars中的每个属性中提取值并迭代它以创建一个表 - 我知道对象中的字段数,data但数字可以变化.是的,我知道以前曾经问过,但似乎没有人能够给出一个有效的答案.但作为最终结果,我想连续显示整个文档,就像这样

<tbody>
  <tr>
    <td>493.6</td>
    <td>740.4</td>
    <td>asdf</td>
</tbody>
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

meteor spacebars

3
推荐指数
1
解决办法
3075
查看次数

Meteor/Blaze - 参数中的简单字符串连接

我知道如何通过更加扩展,可能是"正确"的方法来做到这一点,但我想知道是否有更简单的方法来做到这一点.

{{> alert message="My message"}}
Run Code Online (Sandbox Code Playgroud)

基本上,我有一个取值的模板message.我想给它一个信息Logged in as: samanime,samanime无论价值在哪里currentUser.username.

我知道我可以通过创建一个帮助程序来为我连接这两个部分来做到这一点,但是有一些方法可以在没有额外帮助的情况下完成它吗?也许是这样的:

{{> alert message="Logged in as: ${currentUser.username}"}}
Run Code Online (Sandbox Code Playgroud)

meteor spacebars meteor-blaze

3
推荐指数
1
解决办法
2087
查看次数

使用Meteor时如何正确设置嵌套的#each空格键迭代器的范围?

我有这些嵌套的迭代器:

<ul class='detailViewList'>
    {{#each detailsCollection}}
    <li id={{_id}} class='detailViewEntry {{checkboxStatus}}'>
        <input type="checkbox" class='detailCheckbox'>
        <b>{{detail}}</b>
        <div class="btn btn-xs btn-danger" id="delete-detail">x</div>
        <form class='form-inline'>
            <div class="form-group">
                <input type="text" id='{{_id}}' name='message' class="form-control" placeholder="message">
            </div>
        </form>
        {{#each messagesCollection}}
            {{#if isMessageForThisDetail}}
                {{message.message}}
            {{/if}}
        {{/each}}
    </li>
    {{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过handlebars路径从docs访问来自子模板的父属性:

{{./ name}}或{{this/name}}或{{this.name}}

但是我需要帮助isMessageForThisDetail器将当前迭代的属性messageCollection与当前迭代的父类进行比较detailsCollection.我的助手看起来像这样:

isMessageForThisDetail: function(){
    var message = messagesCollection.findOne({detailId: this._id});
    if(message != undefined){
        return this._id == message._id;
    } else {
        console.log('there is no message for this detail');
    }
}
Run Code Online (Sandbox Code Playgroud)

但是上下文this._id …

javascript meteor spacebars

3
推荐指数
2
解决办法
1847
查看次数

在Meteor的Spacebars中使用逻辑运算符

是否可以在Spacebars中使用逻辑运算符(没有模板助手)?

例如:

{{#if status == '0'}}
      Hello world.
{{/if}}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

   While processing files with templating (for target web.browser):
   client/views/test.html:46: Expected identifier, number, string, boolean, null, or a sub expression enclosed in "(", ")"
   ...       {{#if status == '0'}}             ...
   ^

=> Your application has errors. Waiting for file change.
Run Code Online (Sandbox Code Playgroud)

handlebars.js meteor spacebars

3
推荐指数
1
解决办法
708
查看次数

为什么在流星模板中使用{{@ ...}}会导致错误?

用简单的代码

{{#each array}}
{{@index}}: {{this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

出现大量错误.情况与此相同{{@key}}的对象.为什么会这样?

javascript handlebars.js meteor spacebars

2
推荐指数
2
解决办法
1132
查看次数

流星条件 CSS

如何将 设置background-color: #ccc{{colorLike}}助手?此颜色用于列表项。

<template name="viewPost">
Names:
{{#each userNames}}
<li class="name"><a class="{{colourLike}}" href="{pathFor 'viewItem'}" >{{name}}</a></li>
{{/each}}
</template>
Run Code Online (Sandbox Code Playgroud)

我还想{{colorDislike}}bacground-colour: #fff. 这样一来,如果某个元素存在于特定字段中,{{colourDislike}}则将覆盖{{colorLike}}. 我正在收集我可以通过“if”语句实现这一目标。

Template.viewPost.helpers({
    userNames: function(){
        var selectedPostId = Session.get('postId');
        var arrayOfLike = Posts.find({_id: selectedPostId}, {fields: {likes: 1}}).fetch();
        var sumArray = _.chain(arrayOfLike).pluck('likes').flatten().value();
            return Meteor.users.find({_id: {$in: sumArray}});
},
});
Run Code Online (Sandbox Code Playgroud)

所选帖子来自单击帖子标题时创建的另一个模板的会话集。单击后,用户可以看到喜欢该帖子的所有用户名的列表。所以我的目标是让这些名字<li class="name"><a class="{{colourLike}}" href="{pathFor 'viewItem'}" >{{name}}</a></li>具有某种颜色。

当用户单击名称时,他们能够查看“项目”,它是 viewItem 模板上此特定用户配置文件中的一个字段。该模板还显示了一个“不喜欢”该项目的按钮。如果是,则项目的 userId 存储在 Post 文档的“dislike”字段中。

<template name="viewItem">
 {{profile.item}}
  <div class="dislike">
    <button type="button" class="btn …
Run Code Online (Sandbox Code Playgroud)

javascript css meteor spacebars

2
推荐指数
1
解决办法
1562
查看次数

在Meteor模板中渲染任意嵌套对象的可接受方法是什么?

我正在从模板助手返回一个将其他对象嵌入任意深度(表示目录树)的对象,我想将其作为嵌套列表呈现到我的模板中.由于空格键的原理是将逻辑排除在模板之外,它所提供的只是循环和if语句.这适用于迭代大多数对象和数组,甚至是嵌套到已知深度的对象,但对于任意深度的对象,这是不够的.我想出了一些不同的可能策略,我觉得这些策略都不是特别干净:

  • 在模板助手中,返回一个展平的深度优先目录列表,每个目录都标有深度.然后,在模板中使用一些丑陋的逻辑,我可以根据下一个目录的深度创建和关闭li标签.呸.
  • 我可以让我的模板助手从数据构建HTML并将其返回到要显示的模板,承诺在我的模板帮助器中具有表现性东西的另一个主要罪过.
  • 承认,实际上,我的UI必须对它一次显示的文件夹的深度有一些限制,并且只是在我的模板中使用嵌套for循环.这将导致4-5个丑陋的嵌套for循环,并且设计不灵活.
  • 完全跳过模板助手并用jquery手动操作dom,将它全部包装在Deps.Autorun中以保持反应性.这可能需要一些hackyness来模仿blaze保持dom与数据同步的方式.

我必须在这里忽略一些东西.有任何想法吗?

meteor spacebars

2
推荐指数
1
解决办法
371
查看次数

比较Spacebars {{#if}}块中的模板助手值

我需要比较位于嵌套模板中的两个模板助手值.我想知道是否有一种简单的方法来比较{{#if}}语句中的两个模板助手(一个来自父模板),如下所示:

{{#each bids}}
  {{#if bid.price===../job.price}}
    <span>some text</span>
  {{else}}
    <span>some other text</span>
  {{/if}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

如果你不能这样做,我想另一种选择是在每个块内的新模板中使用Template.parentData?我并不反对这一点,如果可能的话,我上面概述的方式会更快更简单.谢谢.

javascript templates meteor spacebars meteor-blaze

2
推荐指数
1
解决办法
1368
查看次数