2017-12-20 37 views
0

나는, 부재 중 전화를 받고에 부재 중 전화 아이콘을 표시하고 싶었녹아웃 조건부 바인딩 이상한 행동

<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> 
아래 그림처럼 내가 현재의 ID와 비교하고

그러나 목록이 업데이트되거나 비어 있으면 가시성이 전환되지 않습니다.
그래서 특정 이벤트에 내가

removeFromList(index){ 
    if (index >= 0) { 
      this.missedCallList().splice(index, 1) 
     } 
} 

같은 항목을 제거하고 그러나이 UI에 업데이트 밤은.

답변

0

splice으로 전화 할 때 ()이 필요하지 않습니다. 대신에 관찰 가능한 배열에 splice을 직접 호출하십시오.

아마 부모 missedCallList 속성을 참조해야 할 때 코드 this

또한
missedCallList.splice(index, 1) 

는 제거 기능을 참조 할 수 있습니다. 상위 범위의 다른 변수에 this을 설정하고 함수 내에서 액세스 할 수 있습니다.

var self = this; 

function removeFromList(index) { 
    if (index >= 0) { 
    self.missedCallList.splice(index, 1); 
    } 
} 
+0

[ts] 유형에 통화 서명이없는 표현식을 호출 할 수 없습니다. 'KnockoutBindingHandler'유형에는 호환 가능한 호출 서명이 없습니다. ** 오류 ** –

+0

내가 그것을 가지고 '개인 missedCallList : KnockoutObservableArray = ko.observableArray();'사용해야합니다. 나는 'private missedCallList : KnockoutObservable = ko.observable();을 사용하고있었습니다. ' –