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 Ember.js-多个复选框-将值传递给queryParam_Javascript_Ember.js - Fatal编程技术网

Javascript Ember.js-多个复选框-将值传递给queryParam

Javascript Ember.js-多个复选框-将值传递给queryParam,javascript,ember.js,Javascript,Ember.js,我有一个项目设置,如下所示 我正在尝试将language.code传递给每个选定语言的languagequeryParam。在我正在使用的实际项目中,我通过绑定到输入的操作成功地做到了这一点,但在页面刷新时,复选框值不会保持不变 有没有办法做到这一点?好吧,您的问题是无法将queryParams绑定到计算属性。所以,在使用数据绑定时,您不能以一种好的方式来实现这一点,但是当您使用DDAU时,单向控制和关闭操作非常容易 顺便说一下,您不需要ember单向控件。余烬现在可以自己处理大部分问题 所以

我有一个项目设置,如下所示

我正在尝试将
language.code
传递给每个选定语言的
language
queryParam。在我正在使用的实际项目中,我通过绑定到输入的操作成功地做到了这一点,但在页面刷新时,复选框值不会保持不变


有没有办法做到这一点?

好吧,您的问题是无法将
queryParams
绑定到计算属性。所以,在使用数据绑定时,您不能以一种好的方式来实现这一点,但是当您使用DDAU时,单向控制和关闭操作非常容易

顺便说一下,您不需要
ember单向控件
。余烬现在可以自己处理大部分问题

所以你的解决方案。 首先,您需要将
queryParams
绑定到一个数组,因为您要存储一个值列表:

selectedLanguages: [],
queryParams: ['selectedLanguages'],
现在,您需要在用户单击复选框时触发一个操作。这可以通过使用带有关闭操作的简单
元素来实现:

<input type="checkbox" onclick={{action 'toggleLanguage' language}} checked={{language.checked}} />
现在您拥有了所需的一切,只是在重新加载页面后不会选中复选框。但要解决此问题,只需使用CP生成
选中的
布尔值:

languagesWithSelected: Ember.computed('selectedLanguages.[]', 'languages.@each.code', {
  get() {
    return this.get('languages').map(({code, name}) => ({
      code,
      name,
      checked: this.get('selectedLanguages').includes(code),
    }));
  }
}),

您可以在中找到一个有效的解决方案。

嗯,您的问题是无法将
queryParams
绑定到计算属性。所以,在使用数据绑定时,您不能以一种好的方式来实现这一点,但是当您使用DDAU时,单向控制和关闭操作非常容易

顺便说一下,您不需要
ember单向控件
。余烬现在可以自己处理大部分问题

所以你的解决方案。 首先,您需要将
queryParams
绑定到一个数组,因为您要存储一个值列表:

selectedLanguages: [],
queryParams: ['selectedLanguages'],
现在,您需要在用户单击复选框时触发一个操作。这可以通过使用带有关闭操作的简单
元素来实现:

<input type="checkbox" onclick={{action 'toggleLanguage' language}} checked={{language.checked}} />
现在您拥有了所需的一切,只是在重新加载页面后不会选中复选框。但要解决此问题,只需使用CP生成
选中的
布尔值:

languagesWithSelected: Ember.computed('selectedLanguages.[]', 'languages.@each.code', {
  get() {
    return this.get('languages').map(({code, name}) => ({
      code,
      name,
      checked: this.get('selectedLanguages').includes(code),
    }));
  }
}),
您可以在中找到有效的解决方案