使用KnockoutJS在添加/删除按钮之间切换
Switch between add/remove button with KnockoutJS
目标
使用KnockoutJS根据可用性在添加/删除按钮之间切换。
问题
我需要在摘要中添加一个产品/项目。如果产品已经在摘要中,则将"添加按钮"更改为"删除按钮",或者将"删除按钮"更改为"添加按钮"
直到这里,只是概念,对吧?是的,但我想我错过了问题的逻辑。
外观:
<!-- ko foreach: products -->
<!-- ko if: isAdded -->
<button class="btn btn-small btn-success action remove">
<i class="icon-ok"></i>
</button>
<!-- /ko -->
<!-- ko ifnot: isAdded -->
<form action="#" data-bind="submit: add">
<button class="btn btn-small action add">
<i class="icon-plus"></i>
</button>
</form>
<!-- /ko -->
<!-- /ko -->
正如您所看到的,有条件检查是否添加了特定的产品。如果列表为空,则不显示任何内容;如果我通过代码手动添加一些内容,就会出现两个按钮——remove和add按钮。
我制作这个CodePen是为了模拟这个场景。
有人能帮我吗?
一些细节
我可以使用jQuery;我已经做了大约三个星期了,直到现在都没有成功。
在我看来,您没有充分利用knockoutjs(但这可能只是因为我没有看到完整的应用程序)。然而,我重写了一点,并在这里举了一个例子(jsfiddle)。
function Product(name, desc) {
var self = this;
self.name = ko.observable(name);
self.desc = ko.observable(desc);
self.isAdded = ko.observable(false);
};
function SummaryViewModel(products) {
var self = this;
self.products = ko.observableArray(products);
self.add = function (item) {
var i = self.products.indexOf(item);
self.products()[i].isAdded(true);
};
self.remove = function (item) {
var i = self.products.indexOf(item);
self.products()[i].isAdded(false);
};
};
var p = [new Product("One", "Yep one"), new Product("Two", "nope, two")];
ko.applyBindings(new SummaryViewModel(p));
相关文章:
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 在我的Javascript和HTML之间的表单提交按钮链接中遇到问题
- jQuery - 在按钮之间切换
- JQuery ajax在2个按钮之间切换's类具有2次单击事件,但无法更改按钮的值
- 在按钮之间添加隐藏空间
- .click() 和实际单击按钮之间的区别?(javascript/jQuery)
- click.funcion 和 bootstraps 的轮播按钮之间的冲突
- 使用 jQuery 在两个按钮之间切换
- 使用KnockoutJS在添加/删除按钮之间切换
- 在两个单选按钮之间切换
- 3个按钮之间的交互
- 在表单操作与复选框或单选按钮之间交替进行
- 如何在单选按钮之间自动切换
- 如何在单选按钮之间建立关系
- 如何在jQuery的模态对话框的按钮之间放置文本
- 建立开关按钮之间的关系
- 如何在jQuery对话框中的两个按钮之间垂直居中对齐文本
- 选择两个按钮时选择多个按钮(必须选择位于两个按钮之间的按钮)
- 我想为一个网站添加按钮之间的空间(也许它被称为空白)
- 使用javascript在2个按钮之间添加水平空间