Javascript 尝试在for-each循环中操纵单个元素的每个的敲除绑定
在for-each绑定中,我如何尝试切换单个p元素而不是for-each绑定中的所有p元素,希望不要太混乱:)Javascript 尝试在for-each循环中操纵单个元素的每个的敲除绑定,javascript,knockout.js,Javascript,Knockout.js,在for-each绑定中,我如何尝试切换单个p元素而不是for-each绑定中的所有p元素,希望不要太混乱:) var外壳模型={ 可观测的。。。。。, somefunction:function(){ …在这里,我需要切换p2(显示开/关),但不是全部,只需单击一次,或者更确切地说,切换下面的p } } 您可以将$index传递给您的函数,以了解单击的是哪一个,并采取相应的行动: <p data-bind="click:somefunction($index)" class="p1
var外壳模型={
可观测的。。。。。,
somefunction:function(){
…在这里,我需要切换p2(显示开/关),但不是全部,只需单击一次,或者更确切地说,切换下面的p
}
}
您可以将$index
传递给您的函数,以了解单击的是哪一个,并采取相应的行动:
<p data-bind="click:somefunction($index)" class="p1"> </P>
self.someFunction = function(index){
alert("Click on item number: " + index);
};
self.someFunction=函数(索引){
警报(“单击项目编号:“+索引”);
};
如果更改可见性是视图的一部分,那么它应该是视图模型的一部分
一旦你这样做了,事情就会自行解决
function ItemViewModel() {
var self = this;
self.isExpanded = ko.observable(false);
self.toggle = function () {
self.isExpanded(!self.isExpanded());
};
}
function MainVievModel() {
var self.this;
self.items = ko.observableArray([ /* instances of ItemViewModel*/]);
}
及
停止思考“我想切换第二个
”。想一想“我想在展开状态和折叠状态之间切换项。”然后再对其进行可视化表示,例如使用可视化绑定。我本来想添加一个自定义绑定,但您的方法更简洁,因为我不需要尝试从数组中查找ID,非常好,谢谢Diana.Tomalak,我正在使用可视绑定,并且在应用程序中使用了类似于elswhere的东西,效果很好,但是当有一个项目列表,并且有很多p2时,我如何使用可视绑定来打开所有p2,顺便问一下self.isExpanded(!self.isExpanded());只需反转值,很酷的方式,如果通常存在,我会这样做,但您仍然会想到您的div.p2
。不要那样做。如果有许多项,则编写一个函数来迭代这些项,并切换它们的isExpanded
属性(在我的示例中,它将是MainVievModel
的一个方法)。当isExpanded
为true时出现div.p2
的事实是次要的。这完全是你的观点。你的任务是操纵视图模型。我明白你的意思了,因为for-each是一个数组,ixexpanded属性真的很独特,现在有点乱,谢谢你的指针!
function ItemViewModel() {
var self = this;
self.isExpanded = ko.observable(false);
self.toggle = function () {
self.isExpanded(!self.isExpanded());
};
}
function MainVievModel() {
var self.this;
self.items = ko.observableArray([ /* instances of ItemViewModel*/]);
}
<div data-bind="foreach: items">
<p data-bind="click: toggle" class="p1"> </p>
<p data-bind="visible: isExpanded" class="p2"></p>
</div>