2015-10-05 68 views
1

我有一個自定義聚合物元素是一種形式,並採取這樣的事情。指定功能發佈屬性

飛鏢腳本:

@CustomTag('my-form') 
class MyForm extends PolymerElement { 
    @published Function submitFunction; 

    validateAndSubmit() { 
     // validate 
     submitFunction(); 
    } 
} 

HTML:

<polymer-element name="my-form"> 
    <template> 
     <button id="submitButton" on-click="{{ validateAndSubmit }}">Submit</button> 
    </template> 
</polymer-element 

當點擊提交按鈕,提交函數將被調用,但你可以看到它首先需要設置的東西。我在一個頁面中多次使用這個元素,並且對於每個表單我都需要它來做一些不同的事情。

在我主我有這樣的:

@CustomTag('my-form') 
class MyCustomForm extends MyForm { 
    // The below commented out line would work if I only had one form. 
    // var submitFunction = submitForm1; 

    submitForm1() { 
     // do stuff with form 1 
    } 

    submitForm2() { 
     // do stuff with form 2 
    } 
} 

而在HTML:

<my-form id="form1" submitFunction="{{ submitForm1 }}"></my-form> 
<my-form id="form2" submitFunction="{{ submitForm2 }}"></my-form> 

但是,這是行不通的。 submitForm函數根本不運行。有什麼建議麼?

回答

0

對於聚合物,您需要在事件名稱on-click而不是onclick中添加短劃線。

根據您使用您需要

@enventHandler // Polymer <= 1.0.0-rc.1 
@reflectable // Polymer >= 1.0.0-rc.2 

聚合物1.0註釋的功能聚合物的版本是很嚴格的什麼是可能的/允許綁定表達式。該空間可能會導致問題太

"{{ submitForm1 }}" 

嘗試

"{{submitForm1}}" instead 
+0

我的聚合物:「> = 0.15.1 <0.17.0」在我的pubspec.yaml中,但我認爲這是Dart版本?嘗試沒有空間,但沒有運氣。我如何設置這個編程?就像如果我想通過ID選擇我的表單,然後以編程方式設置submitFunction屬性,我該怎麼做,代碼將會放在哪裏? – maus

+0

對不起,我以爲Polymer 1.0.0-rc。我會再檢查一次。 –

+0

對於聚合物,您需要在事件名稱'on-click'而不是'onclick'中添加短劃線。 –

1

要初始化submitFunction編程,(對高分子化合物< 0.17.0或更新),添加以下。

@whenPolymerReady 
onReady() { 
    MyForm form1 = (querySelector("#form1") as MyForm); 
    form1.submitTo = methodToCallOnSubmit(); 
    // same for form 2. 
}