2015-11-30 3 views
0

Я разработал компонент для i18n в Polymer. На основе <iron-localstorage> он сохраняет и изменяет локаль.Наблюдатели Кросс-DOM в Полимере

<iron-localstorage name="marvin-locale-ls" 
          value="{{locale}}" 
          on-iron-localstorage-load-empty="initializeDefaultLocale" 
     ></iron-localstorage> 
<script> 

    MarvinLocaleLS = Polymer({ 
     is: 'marvin-locale-ls', 

     properties: { 
      locale: {type: String}, 
      ... 

Также у меня есть компонент переводчика, который выполняет перевод на основе этого языка. Я хочу сделать что-то вроде этого:

<script> 
     Polymer({ 
      is: 'marvin-translate', 
      ls: new MarvinLocaleLS(), 
      properties: { 
       key: { 
        type: String, 
        notify: true 
       }, 
       locale: { 
        type: Polymer.dom().querySelector('marvin-locale-ls').properties.locale, 
        observer: '_localeObserver' 
       } 
      }, 

      ready: function(){ 
       this.key = this.textContent; 
       var t = this.ls.getTranslation(this.key); // get translation from Local Storage 
       this.textContent = (t) ? t : this.key; // show translation or key if there is no translation 
      }, 
      _localeObserver: function(){ 
       console.log('locale changed') 
      } 

     }); 


    </script> 

Другими словами я хочу создать наблюдателя в «Марвин-перевод» недвижимость в "Марвин-локали-LS. Является ли это возможным?

+0

перейти к «marvin-translate» из локали, наблюдаемого свойства, которое регистрируется как наблюдаемое в «m-translate». см. 1.0 документов о свойствах и привязке данных. –

+0

они находятся в разных файлах, поэтому я боюсь, что привязка не поможет – AlexNasonov

+0

https://github.com/googlecast/cast-controller-bar-polymer/blob/master/cast-controller-bar.html видеть привязку там в [[local-media]] и обратите внимание, что 3 или 4 других файла в проекте также привязаны к тому же свойству, глобальному значению или чем-то подобному, которое передается нескольким файлам diff diff в проекте –

ответ

0

Посмотрите на этот компонент, он позволит вам обмениваться переменной по принципу «ключ/значение» и обращаться к ним там, где вы хотите. Он также поддерживает привязку данных (которая iron-meta еще не указана): https://github.com/akc42/akc-meta

Смежные вопросы