使用Dart聚合物重复元素

时间:2014-03-20 06:51:49

标签: oop dart code-reuse dart-polymer

主张:

G'day,我对集体智慧 - 信任有疑问。我在试图用Dart和Dart-Polymer解决一个神秘的错误时做了一个观察(参见:related)。

我遇到的事情与(和)元素有关;在我对上述错误的调查过程中,我创建了两个克隆的元素:

  1. <x-fred>
  2. <z-fred>
  3. 两者都是Stopwatch示例中元素的克隆。

    原始的唯一变化是元素名称。

    我发生的事情是能够一个漂亮的'股票元素',例如stopwatch我最不需要一个独特的 fred < /strong>.html为每个元素

    这预先假定我可以组织我的项目,以便维护方便和简单。

    问题(S):

    真正的问题是开发人员如何做以下事情......?

    1. 元素布局定义,无需创建克隆(或 copy )。
    2. 是否有模式(至少)允许项目{}为克隆的基础代码 元素?
    3. 有没有办法元素定义,使用声明或“ what-not-how ”模式,以便我可以说:
      • <z-fred> 是-a 秒表元素(例如)。
    4. 是否有模式或配方可让您 成为 秒表元素,并为某些样式配置和/或自定义实例,参数或行为。
    5. 如果没有,那么需要将这些事情放下来讨论。 和[dart:polymer]会发生什么变化?有没有comp.lang.dart? : - )

      实施例

      假设我有一个名为<z-fred>的Polymer元素。我想继承z-fred元素以生成一个新的( daughter )元素定义:<x-fred>

      我该怎么做?

      我希望能够做到......

        <!DOCTYPE html>
        <polymer-element name="x-fred">
      
          <link rel="import"     href="elements/zfred/fred.html">
      
          <template>
            <style>
              :host {  /* override zfred defiitions */
                  background-color: blue;
                  text-align: center;
                  display: inline-block;
                  border: solid 1px;
                  padding: 10px 10px 10px 10px;
              }
            </style>
            <div>
              <x-fred> 
                <h1>X-Fred: {{counter}} </h1>
                <p>Fred X is a count-down timer.  Fred Z is a normal stopwatch (count-up).</p>
                <override>
                  <button on-click="{{stop}}"  id="stopXFredButton">Stop</button>
                </override>
              </x-fred>
              <div>
                 <p>this is a count-down timer.  Remaining time at end: {{ counter }} </p>
              </div>
            </div>
          </template>
      
          <script type="application/dart" src="xfred.dart">  </script>
      
        </polymer-element>
      

      请参阅?我的例子不起作用,因为这里需要的是XFred.polymer继承自ZFred.polymer。

      那就是说,我没有看到将.html加.dart绑定到某个类型的'element 模块中。在我的小方法中,我想通过将每个小部件放在它自己的文件夹中来做到这一点。为了实现这一点(并且会有更好的机制), daughter 需要能够覆盖父Public和Protected属性(非私有)。

      我原以为xfred.dart会隐式继承zfred.dart(因为词法上)两个Dart文件都与Polymer元素无关。在这个时刻,有一些产品设计问题需要探讨。选项如:

      1. HTML文件具有.Dart文件的独立继承树。
        • 这意味着zfred和xfred可以根据各种示例使用(共享)相同的底层实现。
        • 或者,可以'调用'一个合适的.Dart实现已定义的接口。
      2. 由.html和.dart代码规范组成的混合'小部件'元素。
      3. 在真实的用户界面中,我可能希望将各种基本UI元素组合成不同类型的子元素,以构成页面,表单或布局。我认为在概念#1之后,生活仍然不那么混乱。这满足了我的另一个要求,即能够管理同一元素的替代代码隐藏行为。

        在一天结束时。我要问的主要问题是框架的一部分是多少,手动黑客的工作量是多少,以确保事情保持快乐? : - )