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),
}));
}
}),
您可以在中找到有效的解决方案