2013-06-14 2 views
0

이 질문은 이미 답변 되었어야하지만이 문제에 대한 설명을 찾을 수 없었습니다.배열 값이 변경되지 않을 때 computed()가 실행되지 않도록하는 방법

I가 선택 될 수있다 일부 항목의 배열있다 : I가 items에 새로운 오브젝트를 추가 할 때마다 viewmodel.selected()viewmodel.items()에 의존하기 때문에

function Item(name) { 
    this.name = name; 
    this.selected = ko.observable(false); 
} 

function ViewModel() { 
    var self = this; 
    this.items = ko.observableArray([]); 

    this.selected = ko.computed(function() { 
     return ko.utils.arrayFilter(self.items(), function (item) { 
      return item.selected(); 
     }); 
    }, this); 
} 

를 상기 selected 또한 심지어 추가 항목이있는 경우, 변경 관찰 선택되어 있지 않습니다. 새 항목을 실제로 선택하지 않으면 this.selected()이 업데이트되지 않게하려면 어떻게합니까?

+0

항목이 변경 될 때마다 선택한 항목이 변경되는 것은 왜 문제입니까? – nemesv

+0

선택 사항에 응답하기 위해 서버에서 쿼리가 실행되기 때문에 실제로는 선택 사항이 없었기 때문입니다. –

답변

0

순수한 ko.computed 솔루션으로이를 달성 할 수 있을지 확신하지 못합니다. '상품'변경 사항을 구독 할 수 있습니다. 하나의 항목이 추가되면 해당 항목이 선택되었는지 확인한 다음 다른 observableArray (있는 경우)로 밀어 넣습니다.

이 질문에 대한 첫 번째 답변보기 : Determine which element was added or removed with a Knockoutjs ObservableArray "항목"(추가 또는 삭제 된 항목)의 특정 변경 사항을 구독 할 수 있습니다.

관련 문제