Ember.js 在把手中显示布尔值

Ember.js 在把手中显示布尔值,ember.js,handlebars.js,Ember.js,Handlebars.js,试图学习余烬JS,我是一个完全的初学者 我有一个Ember JS应用程序,其中一个模型有一个布尔值。当我在车把中显示此值时,我是这样做的: {{#if user.active}}Yes{{else}}No{{/if}} import DS from 'ember-data'; export default DS.Model.extend({ id: DS.attr('integer'), name: DS.attr('string'), email: DS.attr('

试图学习余烬JS,我是一个完全的初学者

我有一个Ember JS应用程序,其中一个模型有一个布尔值。当我在车把中显示此值时,我是这样做的:

{{#if user.active}}Yes{{else}}No{{/if}}
import DS from 'ember-data';
export default DS.Model.extend({
    id: DS.attr('integer'),
    name: DS.attr('string'),
    email: DS.attr('string'),
    location: DS.attr('string'),
    active: DS.attr('boolean'),
    administrator: DS.attr('boolean')
});
{{if user.active 'Yes' 'No'}}
我不确定的是,这是否是正确的方法?我应该创建一个助手吗?有没有其他的“最佳实践”方法

模型如下所示:

{{#if user.active}}Yes{{else}}No{{/if}}
import DS from 'ember-data';
export default DS.Model.extend({
    id: DS.attr('integer'),
    name: DS.attr('string'),
    email: DS.attr('string'),
    location: DS.attr('string'),
    active: DS.attr('boolean'),
    administrator: DS.attr('boolean')
});
{{if user.active 'Yes' 'No'}}

我很感谢所有我能得到的提示:)

助手将是一个简单而干净的解决方案

// Helper
Handlebars.registerHelper("printBool", function(b) {
  if (b) {
    return "Yes";
  } else {
    return "No";
  }
});

// Usage 
{{printBool user.active}}

助手应该是一个简单而干净的解决方案

// Helper
Handlebars.registerHelper("printBool", function(b) {
  if (b) {
    return "Yes";
  } else {
    return "No";
  }
});

// Usage 
{{printBool user.active}}

一个较短的替代方法是使用
if
helper的内联版本,如下所示:

{{#if user.active}}Yes{{else}}No{{/if}}
import DS from 'ember-data';
export default DS.Model.extend({
    id: DS.attr('integer'),
    name: DS.attr('string'),
    email: DS.attr('string'),
    location: DS.attr('string'),
    active: DS.attr('boolean'),
    administrator: DS.attr('boolean')
});
{{if user.active 'Yes' 'No'}}
让我们参考官方文档来实现helper

您可以通过在终端中运行
ember generate helper is user active
开始。用您想要的名称替换用户处于活动状态的

然后,打开app/helpers/is user active.js
,将代码更改为:

import Ember from 'ember';

export function isUserActive([user]) {
  return user.get('active') ? 'Yes' : 'No';
}

export default Ember.Helper.helper(isUserActive);
保存后,您可以像这样开始使用此帮助程序:
{{{is user active user}

[编辑:本地化]

为了支持使用
ember-i18n
(参见注释)进行本地化,我们需要使用插件提供的。为了使用它,我们需要将助手更改为使用:


user.active
user.notActive
是组合键,您需要替换自己的。
i18n
服务文档中有一个示例,可以在必要时传递用于插值的数据。

一个较短的替代方法是使用
if
helper的内联版本,如下所示:

{{#if user.active}}Yes{{else}}No{{/if}}
import DS from 'ember-data';
export default DS.Model.extend({
    id: DS.attr('integer'),
    name: DS.attr('string'),
    email: DS.attr('string'),
    location: DS.attr('string'),
    active: DS.attr('boolean'),
    administrator: DS.attr('boolean')
});
{{if user.active 'Yes' 'No'}}
让我们参考官方文档来实现helper

您可以通过在终端中运行
ember generate helper is user active
开始。用您想要的名称替换用户处于活动状态的

然后,打开app/helpers/is user active.js
,将代码更改为:

import Ember from 'ember';

export function isUserActive([user]) {
  return user.get('active') ? 'Yes' : 'No';
}

export default Ember.Helper.helper(isUserActive);
保存后,您可以像这样开始使用此帮助程序:
{{{is user active user}

[编辑:本地化]

为了支持使用
ember-i18n
(参见注释)进行本地化,我们需要使用插件提供的。为了使用它,我们需要将助手更改为使用:


user.active
user.notActive
是组合键,您需要替换自己的。
i18n
维修文档中有一个示例,可以在必要时传递数据进行插值。

谢谢您的回答。你能提供一些关于如何做到这一点的示例代码,或者给我一个关于如何制作这样一个助手的教程吗?正如我所说,我是Ember和Handlebar的完全初学者:)//Helper handlebar.registerHelper(“printBool”,函数(b){if(b){return“Yes”;}else{return“No”;}});//用法{{printBool user.active}}感谢您的回答。你能提供一些关于如何做到这一点的示例代码,或者给我一个关于如何制作这样一个助手的教程吗?正如我所说,我是Ember和Handlebar的完全初学者:)//Helper handlebar.registerHelper(“printBool”,函数(b){if(b){return“Yes”;}else{return“No”;}});//用法{{printBool user.active}}感谢您提供了一个易于理解的示例。您知道是否可以在助手中使用本地化吗?是的,但是您可能需要使用基于类的语法。您已经在使用本地化插件了吗?是的,我已经开始使用添加的一个使用i18n的示例!非常感谢你,这是非常有帮助的!它不仅解决了我的问题,我还学习了基于类的语法。再次感谢!感谢您提供了一个易于理解的示例。您知道是否可以在助手中使用本地化吗?是的,但是您可能需要使用基于类的语法。您已经在使用本地化插件了吗?是的,我已经开始使用添加的一个使用i18n的示例!非常感谢你,这是非常有帮助的!它不仅解决了我的问题,我还学习了基于类的语法。再次感谢!