【问题标题】:Polymer core-scaffold change tool using data binding使用数据绑定的聚合物核心-支架更换工具
【发布时间】:2014-07-18 21:55:53
【问题描述】:

我在我的网站上使用Polymer,更具体地说是Core-Scaffold

这是我制作的一些示例代码:

<core-scaffold>
  <core-header-panel navigation flex mode="seamed">
    <core-toolbar>Application</core-toolbar>
    <core-menu theme="core-light-theme">
      <core-item icon="settings" label="item1"></core-item>
      <core-item icon="settings" label="item2"></core-item>
    </core-menu>
  </core-header-panel>
  <div tool>Title</div>
  <div>Content goes here...</div>
</core-scaffold>
<script>
  var menuItems = document.querySelector("core-menu");

  menuItems.addEventListener("core-select", function(){
    console.log(menuItems.selected);
  });
</script>

我想要的是在单击core-menu 中的core-item 之一时,&lt;div tool&gt;Title&lt;/div&gt; 内容会相应更改。我已经能够将事件侦听器附加到按钮的选择中,但我不太清楚如何使工具保持最新。 Polymer 有一个双向的data binding,我还没有完全掌握。

那么,使用按下的菜单项标签更新tool-div 的最建议方法是什么?

【问题讨论】:

    标签: javascript data-binding polymer


    【解决方案1】:

    您可以通过两种方式的数据绑定轻松完成此操作。 &lt;core-menu&gt; exposes a selectedItem attribute 可以绑定。要获得数据绑定,您可以手动设置绑定模板,但您可能只想让您的应用程序本身成为一个组件。像这样:

    <my-app></my-app>
    
    <polymer-element name='my-app'>
      <template>
        <core-scaffold>
          <core-header-panel navigation flex mode="seamed">
            <core-toolbar>Application</core-toolbar>
            <core-menu theme="core-light-theme" selectedItem='{{item}}'>
              <core-item icon="settings" label="item1"></core-item>
              <core-item icon="settings" label="item2"></core-item>
            </core-menu>
          </core-header-panel>
          <div tool>{{item.label}}</div>
          <div>Content goes here...</div>
        </core-scaffold>
      </template>
      <script>
        Polymer('my-app', {
        });
      </script>
    </polymer-element>
    

    【讨论】:

    • 有没有办法在不需要创建单独的'my-app'-element 的情况下做到这一点?
    • 是的,有几种方法,最简单的是使用自动绑定模板:stackoverflow.com/questions/24824576/…。也就是说,我鼓励您编写自己的元素,因为它为您提供了一个方便的地方来声明函数过滤器和计算属性,保持封装状态,并使您能够以新的可重用方式使用您网站的组件!
    • 问题是它是我的主页,core-scaffold 是包含我所有数据的主要元素,所以这样做需要我将大部分(如果不是全部)代码写在一个core-scaffold 的模板...我尝试了您的示例并且它有效,但是我找不到在 core-menu 上绑定 eventListeners 的方法。
    • Polymer 可以(为您处理绑定事件)[polymer-project.org/docs/polymer/…,或者您可以将代码放入 (domReady)[polymer-project.org/docs/polymer/polymer.html#lifecyclemethods] 并使用 ($.id)[polymer-project.org/docs/polymer/…。如果您有更具体的问题,尽管问,我会查看网站上标记为 Polymer 的几乎每个问题 :)
    • 我刚刚按照您第一次的建议创建了一个单独的聚合物元素,实现起来并不难,现在我的其余代码也具有更好的结构。所以不需要新的 jsbin,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多