2017-10-17 12 views
0

누군가가 힌트를 줄 수 있기를 바랍니다. Ic는 다른 배열 필드를 가진 폼을 만들었습니다. 그들 중 하나는 두 번째 드롭 다운이 있는데 두 번째 드롭 다운의 항목은 첫 번째 항목의 선택에 따라 다릅니다. 이것은 관찰자와 함께 해결하기 쉽고 첫 번째 선택에서 값을 변경 한 후에 두 번째 값을로드해야합니다. 지금까지 문제 없습니다.AlpacaJS : 배열에 동적으로 추가 된 객체에 대한 관찰자

하지만이 문제는 쉬운 정적 필드 집합을 테스트 할 때 동적으로 추가 된 필드에 대해 관찰자를 어떻게 처리해야하는지 파악할 수 없었습니다.

또한 절대 필드가 아닌 상대 필드를 지정하는 옵션이 있는지 확실하지 않습니다. 실제 객체에 항상 값을 설정해야하므로 훨씬 쉬울 것입니다. 여기

작은 바이올린 설정 https://jsfiddle.net/ygwuxrbk/

{ 
     "schema": { 
      "title": "Erfassung", 
      "type": "array", 
      "items": { 
       "title": "Account", 
       "type": "object", 
       "properties": { 
        "services": { 
         "type": "array", 
         "title": "Services", 
         "required": true, 
         "uniqueItems": true, 
         "items": { 
          "description": "Angebotenen Services des Anbieters", 
          "type": "object", 
          "id": "arr_item", 
          "properties": { 
           "category": { 
            "type": "select", 
            "title": "Service Kategorie", 
            "required": true, 
            "$ref": "#/definitions/categories" 
           }, 
           "service": { 
            "title": "Service", 
            "type": "select", 
            "enum": service["Beauty & Wellness"] 
           } 
          } 
         } 

        } 
       } 
      }, 
      "definitions": { 
       "categories": { 
        "enum": 
        categories 
       }, 
      } 
     }, 
     "options": { 
      "fields": { 
       "category": { 
        "type": "select", 
        "label": "Category", 
        "onFieldChange": function (e) { 
          console.log(this.getValue()); 
        } 
       } 
      } 
     }, 
     "form": { 
      "attributes": { 
       "action": "http://testcompany.com/echo.php", 
       "method": "post" 
      }, 
      "buttons": { 
       "save": { 
        "title": "Save", 
        "click": function(e) { 
         alert(JSON.stringify(this.getValue())); 
         //this.submit(); // submit it via regular HTTP post 
         this.ajaxSubmit(); // submit via ajax 
        } 
       } 
      } 
     } 
    } 
+0

OK입니다. 나는 잘못된 경로 구조를 사용하고있었습니다. –

답변

0

에게 위의 예에서 사용하는 경로 내 문제를 발견

    "options": { 
      "items": { 
       "fields": { 
        "services": { 
         "items": { 
          "fields": { 
           "category": { 
            "events": { 
             "change": function() { 
              console.log(this.value); 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      }