복잡한 개체 항목의 플래그 값을 변경하려고합니다. 개체 구조는 다음과 같습니다.
modelData
[0]:
Main: xz1
Sub: a,b,c,d,e
show: true
[1]:
Main: xs1
Sub: g,h,i,j,k
show: false
이 개체에 액세스하고 플래그 값을 토글해야합니다. true이면이 값을 false로 변경해야합니다. false이면 true로 만들어야 함을 의미합니다.
내가 시도한 코드
toggleShow: function (item) {
var index = modelData.indexOf(item);
modelData[index].show = item.show ? false : true; // should get work but not :(
}
함수 내의 항목 데이터는
item
{...}
__proto__: {...}
Main: "AXD"
Sub: [ fg,jk,ik,ko]
show: true
modelData는 관찰 가능한 배열입니다.
modelData
function observable() {
if (arguments.length > 0) {
// Write
// Ignore writes if the value hasn't changed
if (observable.isDifferent(_latestValue, arguments[0])) {
observable.valueWillMutat
[Methods]: {...}
__proto__: {...}
_id: 168
_latestValue: [[object Object]]
_subscriptions: {...}
arguments: null
caller: null
length: 0
prototype: {...}
해당 _latestValue를 사용하여 개체 콘텐츠를 가져올 수 있습니다.
modelData._latestValue
[[object Object]]
__proto__: []
length: 1
[0]: {...}
하지만 색인을 사용하여 액세스 할 수 없습니다. 내 일이 잘못되는 곳과 요소의 색인을 사용하여 값에 액세스 할 수없는 이유를 알려주십시오.
편집하다:
이제 플래그 값을 전환 할 수 있습니다. 그러나 플래그 값이 업데이트되지 않은 뷰에서 내 목록을 업데이트하면. 여기에서 내 바이올린을 찾으십시오 .
+ Main1
hello
hi
+ Main2
one
two
더하기 기호를 클릭하면 하위 목록이 숨겨집니다. 더하기 기호를 다시 클릭하면 하위 목록이 다시 표시됩니다.
어떤 제안이라도 도움이 될 것입니다.
인수가없는 함수로 호출하여 기본 배열을 가져 오려면 observableArray 를 풀어야합니다modelData
.
따라서 다음을 추가 ()
해야합니다 [index]
.
toggleShow: function (item) {
var index = modelData.indexOf(item);
modelData()[index].show = item.show ? false : true;
}
참고 : observableArray에 대해 추가로 구현되었지만 인덱서는 그렇지 않기 때문에이 없이 indexOf
작동 합니다 ()
.
UI에서 변경 사항을 확인하려면 show
속성 a 를 변환 ko.observable
해야하며 다음으로 업데이트해야합니다.
toggleShow: function (item) {
var index = modelData.indexOf(item);
modelData()[index].show(item.show() ? false : true);
}
업데이트 된 코드 : https://jsfiddle.net/ujs77n7r/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다