敲除条件绑定奇怪的行为
knockout conditional binding weird behavior
我想在接到未接来电时显示未接来电图标,因此我维护了一个未接来电列表,并将其与当前 ID 进行比较,如下所示
<div class="col m1" data-bind="visible:$component.missedCallList().indexOf($data._id)>=0">
<img src="${require(`./../../../../icons/icon-missed-call.svg`)}" alt="" class="responsive-img _badges">
</div>
但是当列表更新或为空时,可见性不会切换。
所以在某个特定事件中我将删除
之类的条目
removeFromList(index){
if (index >= 0) {
this.missedCallList().splice(index, 1)
}
}
但它没有在 UI 上更新。
调用 splice
时不需要 ()
。而是直接在可观察数组上调用 splice
。
例如
missedCallList.splice(index, 1)
同样在您的代码中,this
可能指的是删除函数,而它可能应该指的是父 missedCallList
属性。您可以将 this
设置为父作用域中的另一个变量,并从函数内部访问它。
例如
var self = this;
function removeFromList(index) {
if (index >= 0) {
self.missedCallList.splice(index, 1);
}
}
我想在接到未接来电时显示未接来电图标,因此我维护了一个未接来电列表,并将其与当前 ID 进行比较,如下所示
<div class="col m1" data-bind="visible:$component.missedCallList().indexOf($data._id)>=0">
<img src="${require(`./../../../../icons/icon-missed-call.svg`)}" alt="" class="responsive-img _badges">
</div>
但是当列表更新或为空时,可见性不会切换。
所以在某个特定事件中我将删除
removeFromList(index){
if (index >= 0) {
this.missedCallList().splice(index, 1)
}
}
但它没有在 UI 上更新。
调用 splice
时不需要 ()
。而是直接在可观察数组上调用 splice
。
例如
missedCallList.splice(index, 1)
同样在您的代码中,this
可能指的是删除函数,而它可能应该指的是父 missedCallList
属性。您可以将 this
设置为父作用域中的另一个变量,并从函数内部访问它。
例如
var self = this;
function removeFromList(index) {
if (index >= 0) {
self.missedCallList.splice(index, 1);
}
}