KnockoutJS : 인덱스를 사용하여 관찰 가능한 배열의 값에 액세스 할 수 없습니다.

제야 수리야 무투 마리

복잡한 개체 항목의 플래그 값을 변경하려고합니다. 개체 구조는 다음과 같습니다.

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

더하기 기호를 클릭하면 하위 목록이 숨겨집니다. 더하기 기호를 다시 클릭하면 하위 목록이 다시 표시됩니다.

어떤 제안이라도 도움이 될 것입니다.

Nemesv

인수가없는 함수로 호출하여 기본 배열을 가져 오려면 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Knockoutjs를 사용하여 관찰 가능한 배열에서 항목을 제거 할 수 없습니다.

분류에서Dev

knockoutjs는 관찰 가능한 값에 액세스 할 수 없다고 계산했습니다.

분류에서Dev

웹 API 결과를 관찰 가능한 배열 + Knockoutjs에 바인딩 할 수 없습니다.

분류에서Dev

KnockoutJS : 사용자 지정 구성 요소 외부에서 관찰 가능한 변수에 액세스

분류에서Dev

KnockoutJS : 사용자 지정 구성 요소 외부에서 관찰 가능한 변수에 액세스

분류에서Dev

getChildren ()이 Circle을 첫 번째 요소로 사용하여 관찰 가능한 목록을 반환 할 때 Circle의 값에 어떻게 액세스합니까?

분류에서Dev

typescript를 사용하여 관찰 가능한 객체 목록에서 필터를 사용할 수 없습니다.

분류에서Dev

1D 인덱스를 사용하여 C ++ 2D int 배열에 액세스 할 수 있습니까?

분류에서Dev

KnockoutJS에서도 관찰 가능할 수 있습니다.

분류에서Dev

내 int가 변환 불가능하기 때문에 배열 값에 액세스 할 수 없습니다.

분류에서Dev

배열 포인터 C의 인덱스에 액세스 할 수 없습니다.

분류에서Dev

변수를 사용하여 필드 내부의 배열 구성원에 액세스 할 수 없습니다.

분류에서Dev

배열의 모든 값에 액세스 할 수 없습니다.

분류에서Dev

키를 사용하여 배열의 요소에 액세스 할 수 없습니다.

분류에서Dev

AngularJS를 사용하여 동일한 뷰의 요소에 액세스 할 수 없습니다.

분류에서Dev

Java 8 Streams 필터를 사용하여 목록의 인덱스에 액세스 할 수 있습니까?

분류에서Dev

BeautifulSoup / Request를 사용하여 웹 사이트의 차트 값에 액세스 할 수 없습니다.

분류에서Dev

인덱스를 사용하여 문자열 개별 문자에 액세스 할 수없는 이유

분류에서Dev

React : 상태 (인덱스가 정의되지 않음)에있는 배열의 인덱스에 액세스 할 수 없습니다.

분류에서Dev

해결 방법-ValueError : Python의 값과 길이가 다른 다중 인덱스 선택 인덱서를 사용하여 설정할 수 없습니다.

분류에서Dev

관찰 가능한 데이터를 각도의 지역 변수에 할당 할 수 없습니다.

분류에서Dev

'문자열'유형의 인덱스를 사용하여 '[CustomObject]'유형의 값을 첨자 할 수 없습니다.

분류에서Dev

점 또는 배열 표기법을 사용하여 자바 스크립트에서 객체의 값에 액세스 할 수없는 것 같습니다.

분류에서Dev

<div>에서 관찰 가능한 배열의 항목을 표시 할 수 없습니다.

분류에서Dev

배열의 Typescript 요소에 액세스 할 수 없습니다.

분류에서Dev

배열의 Google지도에 액세스 할 수 없습니다.

분류에서Dev

JavaScript : 개체의 배열에 액세스 할 수 없습니다.

분류에서Dev

VMWare를 사용하여 가상 머신에서 인터넷에 액세스 할 수 없습니다.

분류에서Dev

커스텀 모델 관리자를 사용하여 모델 속성에 액세스 할 수 없습니다.

Related 관련 기사

  1. 1

    Knockoutjs를 사용하여 관찰 가능한 배열에서 항목을 제거 할 수 없습니다.

  2. 2

    knockoutjs는 관찰 가능한 값에 액세스 할 수 없다고 계산했습니다.

  3. 3

    웹 API 결과를 관찰 가능한 배열 + Knockoutjs에 바인딩 할 수 없습니다.

  4. 4

    KnockoutJS : 사용자 지정 구성 요소 외부에서 관찰 가능한 변수에 액세스

  5. 5

    KnockoutJS : 사용자 지정 구성 요소 외부에서 관찰 가능한 변수에 액세스

  6. 6

    getChildren ()이 Circle을 첫 번째 요소로 사용하여 관찰 가능한 목록을 반환 할 때 Circle의 값에 어떻게 액세스합니까?

  7. 7

    typescript를 사용하여 관찰 가능한 객체 목록에서 필터를 사용할 수 없습니다.

  8. 8

    1D 인덱스를 사용하여 C ++ 2D int 배열에 액세스 할 수 있습니까?

  9. 9

    KnockoutJS에서도 관찰 가능할 수 있습니다.

  10. 10

    내 int가 변환 불가능하기 때문에 배열 값에 액세스 할 수 없습니다.

  11. 11

    배열 포인터 C의 인덱스에 액세스 할 수 없습니다.

  12. 12

    변수를 사용하여 필드 내부의 배열 구성원에 액세스 할 수 없습니다.

  13. 13

    배열의 모든 값에 액세스 할 수 없습니다.

  14. 14

    키를 사용하여 배열의 요소에 액세스 할 수 없습니다.

  15. 15

    AngularJS를 사용하여 동일한 뷰의 요소에 액세스 할 수 없습니다.

  16. 16

    Java 8 Streams 필터를 사용하여 목록의 인덱스에 액세스 할 수 있습니까?

  17. 17

    BeautifulSoup / Request를 사용하여 웹 사이트의 차트 값에 액세스 할 수 없습니다.

  18. 18

    인덱스를 사용하여 문자열 개별 문자에 액세스 할 수없는 이유

  19. 19

    React : 상태 (인덱스가 정의되지 않음)에있는 배열의 인덱스에 액세스 할 수 없습니다.

  20. 20

    해결 방법-ValueError : Python의 값과 길이가 다른 다중 인덱스 선택 인덱서를 사용하여 설정할 수 없습니다.

  21. 21

    관찰 가능한 데이터를 각도의 지역 변수에 할당 할 수 없습니다.

  22. 22

    '문자열'유형의 인덱스를 사용하여 '[CustomObject]'유형의 값을 첨자 할 수 없습니다.

  23. 23

    점 또는 배열 표기법을 사용하여 자바 스크립트에서 객체의 값에 액세스 할 수없는 것 같습니다.

  24. 24

    <div>에서 관찰 가능한 배열의 항목을 표시 할 수 없습니다.

  25. 25

    배열의 Typescript 요소에 액세스 할 수 없습니다.

  26. 26

    배열의 Google지도에 액세스 할 수 없습니다.

  27. 27

    JavaScript : 개체의 배열에 액세스 할 수 없습니다.

  28. 28

    VMWare를 사용하여 가상 머신에서 인터넷에 액세스 할 수 없습니다.

  29. 29

    커스텀 모델 관리자를 사용하여 모델 속성에 액세스 할 수 없습니다.

뜨겁다태그

보관