css - 使用 Ember 根据返回的字符串设置 CSS 类

标签 css ember.js ember-controllers

我仍在学习 ember,我不知道如何根据某个 Controller 上模型返回的字符串来应用某个 CSS 类。

官方文档 ( http://emberjs.jsbin.com/yoqifiguva/1/edit?html,js,output ) 仅涵盖您拥有 bool 值的情况。

我没有设法将这些知识应用到我的案例中。 我有状态字符串字符串,如:“通过”、“失败”、“挂起”和“已阻止”,我想为每个状态应用不同的 css 类。

关于如何实现这一点的任何示例?

最佳答案

可以使用bind-attr,例如:

<ul>
{{#each item in model}}
  <li {{bind-attr class='item.status'}}>An item with status: `{{item.status}}`</li>
{{/each}}
</ul>

生成以下 HTML:

<ul>
  <li class="passed" data-bindattr-262="262">An item with status: `passed`</li>
  <li class="failed" data-bindattr-265="265">An item with status: `failed`</li>
</ul>

收藏:

[
  YourModel.create({ status: 'passed'}),
  YourModel.create({ status: 'failed'})
]

声明如下的对象:

YourModel = Em.Object.extend({
  status: null
});

Demo.

您还可以创建可在许多模型中重复使用的 Component。 组件代码:

App.StatusItemComponent = Em.Component.extend({
  classNameBindings: ['status'],

  status: function() {
    var modelStatus = this.get('model.status');
    if (modelStatus)
      return 'status-' + modelStatus;
  }.property('model.status')
});

模板代码:

{{#each item in model}}
  {{#status-item model=item}}
    An item with status: {{item.status}}
  {{/status-item}}
{{/each}}

Demo.

关于css - 使用 Ember 根据返回的字符串设置 CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072633/

相关文章:

javascript - 边框使 li 内的内容移位

javascript - 单击导航栏元素后如何防止重新加载单页应用程序?

javascript - Ember 模型对象 hasMany 没有像我期望的那样返回数组

ember.js - ember js Handlebars 模板中绑定(bind)Attr的未绑定(bind)版本

javascript - Ember Simple Auth 如何在 session 无效后重定向到登录?

javascript - Ember 计算未更新

javascript - jQuery、insertBefore、验证、错误消息的放置

javascript - 如何为 react-widget DropdownList 添加 css?

javascript - 在 Promise 中设置属性后,Ember Controller 不刷新模板