2013-08-31 61 views
1

我正在創建我的第一個聚合物應用/示例,並且一個簡單的button on-click不起作用。該方法未被調用。我想用一個簡單的按鈕而不創建一個新的聚合物元素(註釋代碼)。如果我使用聚合物元件中的按鈕,它們就能正常工作。聚合物飛鏢中的按鈕點擊不起作用;需要聚合物元素

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Button</title> 
    <link rel="stylesheet" href="button.css"> 
    <script src="packages/polymer/boot.js"></script> 
    </head> 
    <body> 
    <h1>Button</h1> 

    <template id="tmpl" bind> 
    <button on-click="myMethod">Click me!</button><!! DOES NOT WORK!!! --> 
    </template> 
    <!-- 
    <polymer-element name="my-element" extends="div"> 
     <template> 
     <p> 
      <button on-click="myMethod">Show Message</button> 
      <button on-click="myMethod">Hide Message</button> 
     </p> 
     </template> 
    </polymer-element> 

    <my-element id="test"></my-element>--> 

    <script type="application/dart" src="button.dart"></script>  
    </body> 
</html> 

import 'dart:html'; 
import 'package:polymer/polymer.dart'; 

void main() { 
    query("#tmpl").model = new MyClass(); 
} 

@CustomTag('my-element') 
class MyClass extends PolymerElement with ObservableMixin{ 

    @observable String name="testname"; 

    void myMethod(var e, var detail, var target) { 
    print("button works"); 
    } 
} 

編輯:我剛剛意識到myMethod通過從聚合物元件我的按鈕稱爲有其他元素的模板中所定義tmpl(例如單選按鈕或複選框)中的數據的訪問權限。

回答

0

是的,on-*屬性只能在聚合物元素內使用。

+0

好的,但我如何共享不同聚合物元素之間的數據或應用程序狀態?如果聚合物元素1將一些初始化值從x改變爲z,則聚合物元素2僅再次讀取x。 – Gero

+0

消息傳遞是完成此操作的好方法。觸發事件和/或響應財產變化。 http://www.polymer-project.org/articles/communication.html – ebidel

0

您可以創建自定義元素飛鏢按鈕並使用自定義屬性來設置onclick方法。 As I used it in this demo for onblur

你可以分享這應該配合並保持控制控件之間的一個模型,這個模型狀態。 然後您可以訪問其他控件狀態。