我有一组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}},就像我在胡子中一样,可以阻挡已检查的属性.
在渲染页面时设置当前值并不困难.
我试图将第一张图片设置为"活动项目"我是一个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}},但它对我不起作用.
这有点是我上一个问题的第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)
在此先感谢您的帮助.
我知道如何通过更加扩展,可能是"正确"的方法来做到这一点,但我想知道是否有更简单的方法来做到这一点.
{{> 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) 我有这些嵌套的迭代器:
<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 …
是否可以在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) 用简单的代码
{{#each array}}
{{@index}}: {{this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
出现大量错误.情况与此相同{{@key}}的对象.为什么会这样?
如何将 设置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) 我正在从模板助手返回一个将其他对象嵌入任意深度(表示目录树)的对象,我想将其作为嵌套列表呈现到我的模板中.由于空格键的原理是将逻辑排除在模板之外,它所提供的只是循环和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?我并不反对这一点,如果可能的话,我上面概述的方式会更快更简单.谢谢.