2016-05-24 2 views
1

プロパティの現在のブール値を無効にする計算された文字列プロパティがあるかどうかは疑問です。たとえば、以下の計算されたプロパティ 'isDisabledSubmit'では、isValidEmailおよびisValidMessageの前に感嘆符を追加して、プロパティ値を無効にしようとしました。これはうまくいきませんが、私が達成しようとしていることをおそらく仮定することができます。私はそれが2つの追加のプロパティisInvalidEmailとisInvalidMessageを追加することによって動作するようになることができますが、これは大きなアプリでは少し過剰です... ?EmberにNot/Not Andを使用するCLI

export default Ember.Controller.extend({ 
contactForm: false, 
contactEmail: '', 
contactMessage: '', 
isValidEmail: Ember.computed.match('contactEmail', /^[email protected]+\..+$/), 
isValidMessage: Ember.computed.gte('contactMessage.length', 10), 
isDisabledSubmit: Ember.computed.or('!isValidEmail', '!isValidMessage') 
}); 

なし短いで可能、しかし退屈なソリューション

export default Ember.Controller.extend({ 
contactForm: false, 
contactEmail: '', 
contactMessage: '', 
isValidEmail: Ember.computed.match('contactEmail', /^[email protected]+\..+$/), 
isValidMessage: Ember.computed.gte('contactMessage.length', 10), 
//Add negated version of previous properties...tedious approach... 
isInvalidEmail: Ember.computed.not('isValidEmail'), 
isInvalidMessage: Ember.computed.not('isValidMessage'), 
// 
isDisabledSubmit: Ember.computed.or('isInvalidEmail', 'isInvalidMessage') 
}); 

答えて

0

。 Ember.jsは、利用可能なプロパティを明示し、Ember.computed.matchEmber.computed.notのような便利な関数でコードを読みやすくするのに役立ちます。

ただし、これらの計算されたプロパティをテンプレートで使用する場合は、カスタムヘルパーを使用してこの制限を回避できます。あなたはその後、計算されたプロパティの逆数に応じて、枝のことができるようになります

import Ember from 'ember'; 

export function reverse([value]) { 
    return !value; 
} 

export default Ember.Helper.helper(reverse); 

{{#if (reverse isValidEmail)}} 
{{/if}} 

{{#if isInvalidEmail}} 
{{/if}} 
と同じですただ、次の内容のファイルを作成します app/helpers/reverse.js

この方法はあまり明白ではなく、テンプレート内でのみ機能することに注意してください。

関連する問題