2012-04-18 9 views
1

은 (ASP MVC 3 이상 knockout.js을 사용하여) 코드를 참조하십시오 knockout.js? (remove()를 사용하여 오류가 발생했습니다.) 그러나 성공적으로 pop()을 시도하면제거 항목,

+1

'.pop()'이 작동한다면, 왜 사용하지 않겠습니까? –

+0

.pop()은 입력 한 마지막 항목 만 가져옵니다. 나는 배열의 모든 항목을 삭제할 수 있기를 원합니다. –

+0

나는 당신의 권리를 보았습니다. 그럴 경우 팝이 작동하지 않을 것입니다. –

답변

3

태그 배열은 정상적인 배열이며, 관찰 할 수없는 배열입니다. 제거 방법이 없습니다.

녹아웃 정상 배열

ko.utils.arrayRemoveItem(array, itemToRemove) 

또는 스플 라이스를 사용할 수 있습니다에 대한 도우미를 가지고

1

일반적으로 splice를 사용하여 javascript 배열에서 항목을 제거 할 수 있습니다.

Pop은 마지막으로 삽입 된 값만 제거하기 때문에 작동하지 않습니다.

var a = [1,2,3] a.splice (1,1); # 1 위치에서 하나의 원소 제거 # => [1,3]

원하는 경우 녹아웃과 함께 사용할 수 있습니다. 예로서 : 1. 이드

EDIT있는 모든 요소를 ​​반환

녹아웃도 array.remove 같은 일부 API의 것을 가지고 (함수 (a) {a.id === 1를 반환}) 이 JsFiddle을 볼 수 있습니다 http://jsfiddle.net/Ng39n/

+0

array.remove (function (a) {return a.id === 1;})를 사용할 때 여전히 'Microsoft JScript 런타임 오류 : 개체가이 속성 또는 메서드를 지원하지 않습니다.' 저와 ko.utils.arrayMap을 사용하는 관계가 있습니까? –

1

당신은 같은, 뷰 모델에 removeTag을하는 기능을 추가 할 수 있습니다 (실제로 ko.utils.arrayRemoveItem는 스플 라이스 사용) 다음 :

self.removeTag = function(tag) { self.tags.remove(tag); })