2017-10-17 140 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

好吧,我找到了我的問題。我只是在使用錯誤的路徑結構。 –

回答

0

在上面的例子中使用的路徑是

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