Dart 核心页面选择器检测

标签 dart dart-polymer paper-elements core-elements

我正在尝试通过聚合物元素中的核心页面完成页面更改检测 http://www.polymer-project.org/docs/elements/core-elements.html#core-pages ,这样我就可以为每个方法加载适当的方法。现在,Dart 代码片段在 init 方法中初始化(应用程序启动时启动的第一个方法)。我不确定如何跟踪页面何时更改,以及检测更新的好方法(所以我至少可以在下面的代码片段中看到不同的日志更新)。该代码与这个问题密切相关:Google Dart Pages within Tabs 。如果您需要更多信息,请告诉我。

HTML:

 <paper-tabs id="Tabs" selected="{{page}}" style='width:800px; height:50px; color:#333333;'>
      <paper-tab>Display 1</paper-tab>
      <paper-tab>Display 2</paper-tab>
    </paper-tabs>

    <core-pages selected="{{page}}">
   </core-pages>

Dart :

@observable int page = 0;

var pages = shroot.querySelector("core-pages");
     pages.onChange.listen((e) {
            //keep for debugging
                 if (pages == 0) {
                   _LOG.info("properties 1 selected");
                   display();
                 } else if (pages == 1) {
                   _LOG.info("properties 2 selected");
                   display();
                 }
          });

最佳答案

我在 core-pages 或其父类(super class)中找不到任何 change 事件。

我认为这是最简单的方法:

  @observable int page = 0;

  void pageChanged(oldValue, newValue) {
  //keep for debugging
    if (page == 0) {
      _LOG.info("properties 1 selected");
      display();
    } else if (page == 1) {
      _LOG.info("properties 2 selected");
      display();
    }
  }

如果您更喜欢监听事件,core-pages 扩展了 core-selector,它具有
- core-select - 发送两次以取消选择(旧)和选择(新)。您需要访问事件详细信息才能知道它是哪一个,目前这很困难,因为您需要 dart-js-interop
- core-activate - 当点击项目元素时触发。不确定当选择通过绑定(bind)发生变化时是否会触发,并且您还需要访问事件。详细信息以获取实际选择的页面。

关于Dart 核心页面选择器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127133/

相关文章:

flutter - Flutter中的永久可拖动 Bottom Sheet

flutter - 如何在Flutter上向Google map 添加圆形的照片标记?

dart - 我如何@observe 不实现 observe.Observable 的对象在聚合物中

css - Polymer paper-dialog - 关于背景的开集不透明度

javascript - 在 JavaScript 单击事件中创建的 polymer 纸按钮未触发

flutter - 为什么我的切换按钮有问题

flutter - 如何使用Flutter检测animateCamera是否在Google MapView上完成?

dart - 如何在 PolymerElement 中捕获数据类型不匹配异常?

javascript - dart2js 编译的 Polymer Dart 应用程序未在 IE 11 中运行

dart - 如何在AngularDart组件中删除聚合物 paper 列表框项目