在复选框单击中,更改可以单击的按钮
in checkbox click, change which buttons can be clicked
我现在从ember开始,我已经制作了所有的静态应用程序,所以我"只"需要在上面创建ember层。
在我的事件页面中,我有一个显示事件的列表(事件来自我的数据库)。
events.js:
export default = Ember.Route.extend({
model () {
return this.store.findAll('event');
}
});
在我的模板中,我正在做一个循环,它将打印这样的内容:http://codepen.io/anon/pen/YydjwV
,正如你所看到的,是静态的。
在这个页面中,我有一个控制器,它将根据选中的复选框控制操作:
<ul class="controller__list">
<li class="controller__item">
<span class="controller__legend"> New </span>
</li>
<li class="controller__item">
<span class="controller__legend"> Edit </span>
</li>
<li class="controller__item">
<span class="controller__legend"> Delete </span>
</li>
</ul>
所以。。根据选中的复选框数量,我希望允许点击以下操作:
New action = 0 - Infinity checkbox checked (always allowed)
Edit action = 1 - 1 checkboxes checked
Delete action = 1 - Infinity checkbox checked
我的问题。。。我如何将其与操作绑定???我真的是Ember的新手,我认为这是一个非常核心的水平。。我学习了很多,但学习曲线太疯狂了。。所以…我在想,我怎么能那样做?首先,我需要在输入中绑定操作,对吗???因此:
{{input type="checkbox" action='checkBoxClicked'}}
在我的EventController中:
export default = Ember.ArrayController.extend({
actions: {
checkBoxClicked () {
// WHAT NOW? HOW DISABLE THE BUTTONS?
}
}
});
我不想知道如何保存、删除、编辑等。这很容易,我的问题是了解如何使用组件和根据操作操作html。
伙计们,我不是在要求一个完整的答案,我知道SOF不是这样的论坛,但一盏灯会很好。。一些教程,任何。。
第一种方式:
您需要两个属性来控制某个操作是否可以运行。我们称之为
allowEdit
allowDelete
然后在新建、编辑和删除操作中,如果运行此操作,则首先检查属性值。例如:
actions: {
edit() {
if (!this.get('allowEdit')) {
// action not allowed
return;
}
// your logic
}
}
然后维护数字属性,该属性将记录选中了多少复选框,并根据其值设置allowEdit
和allowDelete
以更正值。
第二种方式:
您还可以使allowEdit
和allowDelete
的计算属性依赖于model.@each.checked
,在计算函数中,您可以检查有多少记录的checked
设置为true
,并对它们进行计数(例如在循环中)。如果(用于编辑)检查记录的计数为1,则可以从计算函数true
返回。否则为false
。
最重要的部分是将checked
属性添加到模板中的复选框中,在每个循环中迭代模型中的事件:
{{#each model as |item|}}
{{input type='checkbox' checked=item.checked}}
{{/each}}
选中复选框时,我可以更改allowX的状态。。正确的
是的,你可以这样做,例如:
allowEdit: Ember.computed('model.@each.checked', function() {
let count = 0;
this.get('model').then(model => { // or simply let model = this.get('model');
model.forEach(item => {
if (item.get('checked')) {
count += 1;
}
});
if (count === 1) {
return true;
}
return false;
});
})
但是这个按钮中的绑定类呢?例如我有一个类控制器--禁用。。每次单击复选框可删除此类。。
您可以使用模板中的控制器属性来添加或删除类,例如:
<span class="controller__legend {{if allowEdit 'allow-edit' 'disable-edit'}}"> Edit </span>
- 单击按钮以等待单击按钮
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- 单击按钮时循环浏览匹配的表
- 单击按钮后启动javascript提示
- 单击按钮时在灯箱中显示不同的内容
- 单击按钮时加载数据
- 如何在不需要单击按钮的情况下获取选项的值
- 单击按钮时显示随机字符串
- 在单击按钮前后禁用提交按钮
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 单击按钮时Div Increment
- 若单击按钮,则更改Javascript中的变量
- 单击按钮更改加载到表中的JSON文件
- 如何在单击按钮时显示2行1列的表格
- 单击按钮前运行事件
- 如何删除父表行时;删除“;在React JS中单击按钮
- 如何创建一个表并在单击按钮时插入此标签和文本字段
- JavaScript-onClick将按钮ID或单击按钮的文本传递给函数
- 如何在单击按钮时显示一个分区,同时隐藏另一个分区