2016-03-03 49 views
0

我试图访问聚合物中的函数中的属性(特定识别符),但我一直将属性取为未定义。这就是我的代码现在的样子。这是一个错误还是我做错了什么?无法访问函数内的聚合物属性

<link rel="import" href="/ensurance/polymer/bower_components/polymer/polymer.html"> 
<link rel="import" href="/ensurance/polymer/bower_components/paper-styles/typography.html"> 
<!-- Iron elements --> 
<link rel="import" href="/ensurance/polymer/bower_components/paper-date-picker/paper-date-picker.html"> 
<link rel="import" href="/ensurance/polymer/bower_components/paper-dialog/paper-dialog.html"> 
<script src="/ensurance/polymer/bower_components/webcomponentsjs/webcomponents-lite.js"></script> 
<script src="/ensurance/polymer/bower_components/moment/moment.js"></script> 
<link rel="stylesheet" href="/ensurance/polymer/components/styles/main.css"> 
<link rel="import" href="/ensurance/polymer/components/styles/shared-styles.html"> 
<style is="custom-style" include="shared-styles"></style> 
<dom-module id="select-fecha"> 
    <template> 
     <style> 
     .smallInput { 
      width: 20%; 
     } 
     </style> 
     <div class="smallInput"> 
      <paper-input label="{{label}}" id="{{generarId('txt')}}" on-tap="abrirFecha" readOnly "true"> 
       <iron-icon icon="date-range"></iron-icon> 
      </paper-input> 
      <paper-dialog id="{{generarId('dialog')}}" class="paper-date-picker-dialog" modal on-iron-overlay-closed="dismissDialog"> 
       <paper-date-picker id="{{generarId('picker')}}"></paper-date-picker> 
       <div class="buttons"> 
        <paper-button dialog-dismiss>Cancel</paper-button> 
        <paper-button dialog-confirm on-tap="seleccionarFecha">OK</paper-button> 
       </div> 
      </paper-dialog> 
     </div> 
    </template> 
    <script> 
    (function() { 
     'use strict'; 

     Polymer({ 
      is: 'select-fecha', 

      properties: { 
       fecha: { 
        type: String, 
        value: "" 
       }, 
       label: { 
        type: String, 
        value: "Fecha" 
       }, 
       identificador: { 
        type: String, 
        value: "", 
        readOnly: true, 
        notify:true 
       }, 
       fechaDate: { 
        type: Date, 
        value: new Date() 
       } 
      }, 
      ready: function() { 

      }, 
      abrirFecha: function() { 
       var dialogFecha = document.querySelector("#" + this.identificador + "_dialog"); 
       dialogFecha.open(); 
      }, 
      seleccionarFecha: function() { 
       var pickerFecha = document.querySelector("#" + this.identificador + "_picker"); 
       var fecha = pickerFecha.date; 
       var txtFecha = document.querySelector("#" + this.identificador + "_txt"); 
       txtFecha.value = fecha; 
      }, 
      generarId: function(elemento) { 
       var retorno = this.identificador + "_" + elemento; 
       return retorno; 
      } 
     }); 
    })(); 
    </script> 
</dom-module> 

我打电话给我的元素像这样

<select-fecha label="Vigencia Desde" identificador="vigenciaDesde" ></select-fecha> 

我感到奇怪的是,属性/属性标签不工作。

非常感谢您。

+0

创建一些jsfiddle,看看发生了什么...我认为这是关于“document.querySelector” –

+0

问题是在函数generarId,它调用document.querySelector之前。有任何想法吗? –

回答

1

问题是,您将“identifyicador”属性标记为“readOnly”。 因此你不能用它设置声明,但只在JS:

myElement._setIdentificador("vigenciaDesde"); 

如果此属性,就是要你组件的API的一部分,那么你应该删除“readOnly的”标志。