【问题标题】:Ember - get state of multiple checkboxes one by oneEmber - 一个一个地获取多个复选框的状态
【发布时间】:2016-06-21 12:27:25
【问题描述】:

我正在开发一个 Ember 应用程序(版本 1.11,旧版本),并且在循环中构建了多个复选框,代码如下。 我需要知道一个元素是否已被选中或未选中。

Ember ehbs

{{#each item in data}}
 <label>
 <input type="checkbox" checked="isChecked" {{action "getData" item on="change"}}/>
 <span>{{item.type}}</span>
 </label>
{{/each}}

Ember 组件

var component = Ember.Component.extend({
 isChecked: true,
 actions: {
  getData: function(data){
   var state = this.get('isChecked');
   var type = data.type;
  }
 }
})

我认为变量的“isChecked”值将为每个单独的复选框保留,但事实并非如此,它只是所有复选框的一个变量。 那么,我怎样才能实现这一点,或者检查所有复选框的各个状态,无论是选中还是未选中。

从长远来看,我正试图到达这里 - http://emberjs.jsbin.com/qaruviwuze/edit?html,js,输出但不想访问和使用 DOM,因为它在这里完成。

【问题讨论】:

    标签: javascript html ember.js checkbox


    【解决方案1】:

    将每个复选框作为组件

    <input type="checkbox" checked="isChecked" {{action "getData" item on="change"}}/>
    

    如下checkbox-component

    {{#each model as |item|}}
      {{checkbox-component isChecked=item.isCheked}}
    {{/each}}
    

    这样您就可以轻松检索每个检查项的值。

    export default Ember.Component.extend({
      tagName: "input",
      isChecked: false,
      attributeBindings: ['type', 'checked'],
      type: 'checkbox',
    
      checked: function() {
        return this.get('isChecked');
      }.property('isChecked'),
    
      click: function() {
        console.log(this.set('checked', this.$().prop('checked')))
      }
    });
    

    查看https://ember-twiddle.com/996f6408266af8cd4d3372bed8e8331c?openFiles=components.checkbox-component.js%2Ctemplates.components.checkbox-component.hbs

    【讨论】:

    • 谢谢,我明天试试这个东西,如果适合的话会告诉你。
    • 嘿,我如何通过单击复选框将操作发送到其父级的父级,因为我必须传递检查状态和项目类型等数据。
    • 你可以这样做。get('targetObject').send('actionName', params);
    • this.get('targetObject') 将指向相应的控制器,否则如果你在视图中,你可以使用 this.get('parentView')
    • 嗯,targetObject 应该是控制器名称吧。我试过了,但它不起作用。在这种情况下,我只有一个控制器和嵌套组件。没有视图,我只是在使用组件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多