在Ember CLI上使用Not Or / Not和

凯夫

所以我想知道是否有一个计算的字符串属性使该属性的当前布尔值取反。例如,在下面的计算属性“ isDisabledSubmit”中,我在isValidEmail和isValidMessage前面添加了一个感叹号,以试图抵消属性值。这行不通,但是您可以假设我正在尝试完成。我可以通过添加两个额外的属性isInvalidEmail和isInvalidMessage使其工作,但是在大型应用程序中这似乎有点过多...是否有一种方法可以对and / or内的属性进行“与非”和“与非”或“或”求反?

export default Ember.Controller.extend({
contactForm: false,
contactEmail: '',
contactMessage: '',
isValidEmail: Ember.computed.match( 'contactEmail', /^.+@.+\..+$/ ),
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', /^.+@.+\..+$/ ),
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') 
});
dynamic_cast

总之没有Ember.js迫使你上明确哪些属性可用,并帮助你的代码可读性与像方便的功能Ember.computed.matchEmber.computed.not

但是,如果您打算在模板中使用这些计算的属性,则可以使用自定义帮助程序来绕过此限制。只需创建一个app/helpers/reverse.js具有以下内容的文件

import Ember from 'ember';

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

export default Ember.Helper.helper(reverse);

然后,您将能够根据所计算属性的逆来分支:

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

是相同的

{{#if isInvalidEmail}}
{{/if}}

请注意,此方法不太明确,仅在模板内部有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Ember CLI正确生成资源和路由

ember-simple-auth和ember-cli

使用Ember CLI和Ember-localstorage-dapter生成模型的问题

Ember CLI ember new和ember init文件未显示但可构建

如何从ember-CLI判断ember.js和ember-data版本?

如何找到最新发布的Ember-Data,Ember-CLI和Ember.js版本?

ember-cli --proxy适用于GET,但在PUT和POST上失败

如何将Ember CLI插件拆分为香草Ember库和Ember CLI插件包装器?

使用Ember CLI和ES6语法`export default`,我如何知道导出是否为Ember.Object

Ember-cli Node.js-使用整洁和波旁威士忌

如何配置和ember-cli应用程序而不是使用命令行选项

Ember-cli项目和网络工作者

如何调试ember-cli生成和提供的Javascript代码?

ember cli和livereload:如何使其正常工作?

Emacs的自动保存文件和ember-cli

Ember Addon依赖项链中的ember-cli和contentFor方法

ember-cli和ember-simple-auth设置用于测试

在Ember CLI中使用Pretender

使用Fixture Adapter和Ember Data 2.0在模型上使用Store.findAll

如何使用和不使用查询参数的 Ember 路由

如何在ember cli中使用自定义授权者和自定义身份验证器进行ember简单身份验证

Ember Octane和JQuery

使用Ember即时添加和推送其他对象

使用金字塔和ember.js路由SPA

使用Ember在侧边栏中加载和卸载多个组件

了解和使用Ember Component生命周期挂钩

使用Express和Ember启动Web应用程序

Ember:使用http-mock和不正确的JSON

Windows上的ember-cli构建太慢