Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止复选框值设置的余烬操作_Javascript_Ember.js_Checkbox - Fatal编程技术网

Javascript 防止复选框值设置的余烬操作

Javascript 防止复选框值设置的余烬操作,javascript,ember.js,checkbox,Javascript,Ember.js,Checkbox,在我的余烬应用程序中,我希望通过循环动态呈现一组复选框,如果选中了两个复选框,则禁用任何未选中的复选框 当选中具有更改操作的复选框时,我在将值设置为“true”时遇到问题。对于以下示例,checkbox。选中该复选框时,不会设置值 {{ input type="checkbox" disabled=checkbox.disabled checked=checkbox.value change=(action "disableCheckboxes" val)}} {{checkbox.label}

在我的余烬应用程序中,我希望通过循环动态呈现一组复选框,如果选中了两个复选框,则禁用任何未选中的复选框

当选中具有更改操作的复选框时,我在将值设置为“true”时遇到问题。对于以下示例,
checkbox。选中该复选框时,不会设置值

{{ input type="checkbox" disabled=checkbox.disabled checked=checkbox.value change=(action "disableCheckboxes" val)}} {{checkbox.label}}
但是,当我删除该操作时,它会被设置:

{{ input type="checkbox" disabled=checkbox.disabled checked=checkbox.value}} {{checkbox.label}}


如何在仍运行操作的情况下设置该值?或者,当已经选择了2个复选框时,禁用未选中复选框是更好的方法吗?

首先,您可以使用一个操作。结帐


但我建议直接将您的值绑定到目标对象

其基本思想是包装数组并在包装中计算isDisabled:

boxes:[{id:1,value:true},{id:2},{id:3}],
boxArr: Ember.computed('boxes.@each.value', {
  get() {
    let disableOthers = Ember.get(this, 'boxes').filterBy('value', true).get('length') >= 2;
    return Ember.get(this, 'boxes').map(origin => {
      return {
        origin,
        disabled: disableOthers && !origin.value,
      };
    });
  }
}),
然后您可以在模板中使用它:

{{#each boxArr as |box|}}
  {{input type="checkbox" disabled=box.disabled checked=box.origin.value}} {{box.origin.id}}
{{/each}}


归档的第三种方法是使用助手。您可以使用一个计算属性来说明是否应该禁用所有
value=false
的复选框,然后使用
not
帮助程序来设置
disabled=(和disableFalseCheckbox(非box.value)
。为此进行签出。

首先可以使用action.Checkout


但我建议直接将您的值绑定到目标对象

其基本思想是包装数组并在包装中计算isDisabled:

boxes:[{id:1,value:true},{id:2},{id:3}],
boxArr: Ember.computed('boxes.@each.value', {
  get() {
    let disableOthers = Ember.get(this, 'boxes').filterBy('value', true).get('length') >= 2;
    return Ember.get(this, 'boxes').map(origin => {
      return {
        origin,
        disabled: disableOthers && !origin.value,
      };
    });
  }
}),
然后您可以在模板中使用它:

{{#each boxArr as |box|}}
  {{input type="checkbox" disabled=box.disabled checked=box.origin.value}} {{box.origin.id}}
{{/each}}


归档的第三种方法是使用帮助程序。您可以使用一个计算属性,说明是否应禁用所有
value=false
的复选框,然后使用
以及
帮助程序设置
禁用=(以及禁用FalseCheckbox(非box.value)
。签出该选项。

为什么不为此使用单选按钮?如果选择了另一个选项,则应自动更改其选中状态。为什么不为此使用单选按钮?如果选择了另一个选项,则应自动更改其选中状态。