【问题标题】:Adding labels to list based on model properties根据模型属性向列表添加标签
【发布时间】:2014-01-08 04:44:10
【问题描述】:

我有一个显示用户列表的 ember 应用程序。我想为列表中的每个项目添加一个标签,以指示用户是可用还是离线,类似于此伪代码中的逻辑:

if (user.state == "available")
//add a green label 
else if (user.state == "idle")
//add an orange label
else 
//add a red label

这是否可以在模板中完成,还是需要在单独的 JavaScript 函数中执行?我对 Web 开发和 ember 很陌生。这是我尝试添加绿色引导标签的 html:

<script type = "text/x-handlebars" id = "users">

<div class="col-md-2">
{{#link-to "users.create"}}<button type="button" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-plus"></button> {{/link-to}}
</div>
<div class="col-md-10">

  <ul class="list-group">
  {{#each user in controller}}

  <li class="list-group-item">
//Add a green label if user is online

if (user.state == "online")
{
    {{#link-to "user" user}}
      {{user.firstName}} {{user.lastName}}
    {{/link-to}}
<span class="label label-success">Online</span>
}
  </li>
{{/each}}

</ul>

{{outlet}}
</div>
</script>

【问题讨论】:

    标签: javascript twitter-bootstrap ember.js


    【解决方案1】:

    您可以像这样创建一个名为 isOnline 的计算属性:

    isOnline: function() {
      return this.get('state') == 'online';
    }.property('state')
    

    并在您的模板检查中使用:

    {{#if user.isOnline}}                    
      <span class="label label-success">Online</span>
    {{else}}
      <span class="label label-danger">Offline</span>
    {{/if}}
    

    类似http://jsfiddle.net/marciojunior/NSuS3/

    【讨论】:

    • 看起来不错,但我想使用引导标签而不是更改整个背景颜色?
    • 抱歉,我走错了路。我更新了答案,请大家看看。
    • 嗯,这非常接近我的需要,但显示所有用户都处于离线状态,即使我知道其中一些用户的状态肯定是在线?
    • 我在 userController.js 文件中包含了 isOnline 函数,并添加了 Console.log('fired');给它。当我加载页面时没有任何反应 - 没有出现“触发消息”。还有其他地方我应该把这个功能放在哪里吗?
    • 我不知道你为什么会遇到这些问题,但是要使用计算属性,你需要使用一些 Ember.Object 子类,普通的 js 对象是行不通的。如果你想把计算的属性放在控制器中,你将需要使用一个 itemController,these docs 解释如何做到这一点。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2011-03-08
    • 2017-09-04
    • 2020-10-24
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多