1

如果我使用这个插件:https://github.com/jmurphyau/ember-truth-helpers灰烬2,使用插件像灰烬,真帮手,而不是仅仅灰烬默认方式表演

很多,比方说,

{{#if (eq model.beautiful true) }}

{{#if (or (eq model.beautiful true) (eq model.crazy true)) }}

什么是Ember在后台创建?像这些计算属性相同的JavaScript作品:

isBeautiful: Ember.computed.equal('model.beautiful', true);等等?

如果我有30个computedProperty(Ember宏和自定义的),最好使用这个插件或默认的Ember方式?

我不知道,因为在一些模板,我可以有这样的事情很多很多次!:

{{#if (or (eq model.beautiful true) (eq model.crazy true)) }}

,而不是仅仅这一个:

{{#if isBeautifulOrCrazy }}

什么在表现方面最好的解决方案?

回答

1

我不认为用户会注意到任何区别。在可能的情况下,我的选择是更少的代码和更好的可维护性。在你的情况,如果你有超过3个相同的线{{#if (or (eq model.beautiful true) (eq model.crazy true)) }},我会建议计算属性。它将使模板更简单,控制器也更小。如果您在几个模板中具有相同的确切线条,则可以在模型上创建计算属性,因此它将是{{#if model.isBeautifulOrCrazy }}。或模板帮手。

什么是Ember在后台创建?

任何助手只是一个函数,返回一些值。 eq助手将是这样的:

function eq([l, r]) { 
    return l === r; 
} 

当烬呈现模板,它计算这个函数,然后使用它的价值。如果其中一个参数发生了变化,则会发生退回。我认为这是与CP相似的。

1

性能差异可以忽略不计。如果你有很多条件逻辑,使用计算属性会更清晰。对于简单的条件,通过一两个比较,使用助手是好的。

ember-truth-helpers提供了一些简单的助手,所以你不必自己写。如果你愿意,你可以简单地创建你自己的助手,特别是如果你不喜欢ember-truth-helpers比较值。对于大多数人来说,ember-truth-helpers确实是他们想要的。

什么是Ember在后台创建?

让我们来看看一个例子:eq

这里是ember-truth-helpers是这样做的:

export function isEqual([a, b]) { 
    return emberIsEqual(a, b); 
} 

这里是emberIsEqual()方法它是从Ember调用。

export default function isEqual(a, b) { 
    if (a && typeof a.isEqual === 'function') { 
    return a.isEqual(b); 
    } 

    if (a instanceof Date && b instanceof Date) { 
    return a.getTime() === b.getTime(); 
    } 

    return a === b; 
}