【问题标题】:polymer , iron media query not working correctly聚合物,铁媒体查询无法正常工作
【发布时间】:2016-11-16 17:36:58
【问题描述】:

我希望铁媒体查询在查询匹配发生变化时调用一个函数并检查查询匹配是否为真,做点什么...

这是我的代码:

<dom-module id="example-example">
  <style>     
  </style>

  <template>

       <iron-media-query query="(min-width: 200px)" query-matches="{{small}}" on-query-matches-changed="detectSmall"></iron-media-query>
       <iron-media-query query="(min-width: 1400px)" query-matches="{{large}}" on-query-matches-changed="detectLarge"></iron-media-query>

  </template>

  <script>
    Polymer({
      is: 'example-example',
        detectLarge: function(){
            console.log(this.large);
        },
        detectSmall: function(){
            console.log(this.small);
        }
    });
  </script>
</dom-module>

我第一次加载页面时,我的设备宽度是 1300px 所以 this.small 应该是 true ,但它是未定义的。

我到底做错了什么?

【问题讨论】:

    标签: polymer polymer-1.0


    【解决方案1】:

    原因是当您的更改事件被触发时,Polymer 仍未完成该元素。 如果你想在你的函数中访问该属性,你可以像这样使用它

    detectLarge: function(e){
            console.log(e.detail.value);
        },
    

    【讨论】:

    • 谢谢,它有效,但您认为使用 e.detail.value 代替查询匹配中的值是否正确?
    • query-matches 用于当您需要在HTML 中使用该结果时。如果javascript event 是更好的选择,因为现在您不必依赖任何第三方库,Polymer 在这里更新变量。
    • 是的,谢谢。有没有办法在一个函数中检查这两个查询?我想检查 min-width 是否为 200px 做某事或 min-width 是否为 1400px 做其他事情,如果它们都不存在做其他事情。我可以在单个函数中执行此操作,而不是为每个 iron-media-query 使用一个函数吗?
    • 您可以尝试e.target.ide.srcElement.id 之类的方法,并将ids 分配给您的所有iron-media-query 元素,但请检查所有浏览器,因为每个浏览器都有不同的事件对象跨度>
    • 我应该为 iron-media-querys 中的所有 on-qeury-matches-changes 指定相同的名称吗?然后检查 e.target.id?这是正确的方法吗?
    猜你喜欢
    • 2016-12-13
    • 2014-02-25
    • 2016-01-22
    • 2014-07-15
    相关资源
    最近更新 更多