2

所以我的 Polymer.Dart 项目在 Chromium 中运行良好(在 Dart 代码上运行)但是当我发布升级和发布构建时,采样器支架继续工作,但纸张按钮、纸张对话框、纸张进度......元素只是没有出现!

我的 HTML 文件看起来像这样

    <link href='http://fonts.googleapis.com/css?family=Droid+Serif|Open+Sans:400,700' rel='stylesheet' type='text/css'>


    <link rel="import" href="packages/paper_elements/paper_button.html">
    <link rel="import" href="packages/paper_elements/paper_dialog_transition.html">
    <link rel="import" href="packages/paper_elements/paper_dialog.html">

    <link rel="stylesheet" href="css/reset.css"> <!-- CSS reset -->
    <link rel="stylesheet" href="css/style.css"> <!-- Resource style -->

    ...

    <paper-button id="infoUPC" class="cd-read-more" raised>Read more</paper-button>
     ...
    <script src="education.dart" type="application/dart"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="js/main.js"></script> <!-- Resource jQuery -->
    <script src="js/modernizr.js"></script> <!-- Modernizr -->

教育.dart

import 'package:polymer/polymer.dart';
import 'dart:html';
import 'package:paper_elements/paper_dialog.dart';

main() {
  initPolymer().run(() {
    Polymer.onReady.then((_) {

      querySelector('#infoFHV').onClick.listen(
              (_) => toggleDialog('fhv'));
      querySelector('#infoUPC').onClick.listen(
              (_) => toggleDialog('upc'));

      querySelector('#infoTU').onClick.listen(
              (_) => toggleDialog('tu'));
    });
  });
}

toggleDialog(language) =>
(querySelector('paper-dialog[edu=$language]') as PaperDialog)
.toggle();

发布规范.yaml

name: polydart_resume
version: 0.0.1
author: Shady
description: Test app
dependencies:
  core_elements: '>=0.3.2 <0.5.0'
  custom_element_apigen: ">= 0.1.1 <0.2.0"
  polymer: ">=0.14.0 <0.16.0"
  web_components: ">=0.9.0 <0.10.0"
  paper_elements: ">=0.5.0 <0.6.0"
transformers:
- polymer:
    entry_points:
    - web/index.html

pub build 在这些文件上没有给我任何警告或错误,但我肯定错过了一些东西吗?

4

2 回答 2

1

您有两个入口页面index.htmllanguages.html. 仅languages.html调用您的自定义main(),但仅index.html在您的pubspec.yaml变压器配置中。

index.html由于这个脚本标签,将调用 Polymer 提供的默认main()方法,但不会调用您的自定义方法main()

<script type="application/dart">export 'package:polymer/init.dart';</script>

languages.html有正确的脚本标签

<script type="application/dart" src="languages.dart"></script>

但这不能按预期工作,因为您的聚合物变压器配置languages.html中没有列出entry_points

transformers:
- polymer:
    entry_points:
#    - web/index.html
    - web/languages.html

从评论:

问:您是否从drawer.html ( <core-item label="Languages" url="chapters/languages.html"></core-item>) 中的链接加载languages.html?– Günter Zöchbauer 25 分钟前

A:是的,这正是我正在做的事情。


这不是人们通常在 Dart 中开发应用程序的方式。你可以,但 Dart 是用于 SPA ( http://en.wikipedia.org/wiki/Single-page_application )。

如果您从 Dart 应用程序加载另一个页面,这就像启动一个完全不同的应用程序。以这种方式加载的每个页面(应用程序)都需要 Polymer 应用程序的所有部分才能工作。

entry_point通常在 Dart中你只有一个入口页面(方便,您只需删除一个元素(视图)并添加另一个元素)。

Dart 还具有相当大的样板代码大小,每次加载另一个页面时都必须加载它,这是相当低效的。

于 2014-10-30T12:06:16.413 回答
1

因为我的问题不是真正的代码相关,而是更基本的问题,所以我在 www.polymer-project.org 上找到了一个示例项目,其中可以看到推荐的路由方法。我发现关于聚合物的介绍文档并没有很好地涵盖这个主题......

于 2014-10-31T10:08:58.337 回答