【发布时间】:2013-06-16 02:47:25
【问题描述】:
假设您有一个自定义组件容器。该组件将 查看其中的任何 html 元素并根据自定义做出决定 这些元素的 html 属性。例如,假设有一个 proportion 属性可以使用如下:
<x-container>
<div proportion="0.2">
...
</div>
<div proportion="0.5">
...
</div>
<div proportion="0.3">
...
</div>
</x-container>
暂时忘记飞镖是一件合理的事情 html属性还是滥用? (注:我正在学习 Dart 和 Web UI 作为我第一次尝试 Web 开发 - 所以这可能是一个坏的 想法)。
如果合理的话,我想嵌套容器:
<x-container>
<x-container proportion="0.3">
...
</x-container>
<x-container proportion="0.3">
...
</x-container>
<div proportion="0.4">
...
</div>
<x-container>
一般容器组件本身没有或不需要 proportion 成员变量,只有它们包含的 html 元素可以 有 proportion html 属性。但是由于 容器 可以是 包含的元素我希望它能够拥有这样的 html 属性。如何在实例化中设置 html 属性 没有尝试调用 dart 方法 ("proportion=") 的组件 一个不存在也不应该存在的成员变量?
从答案 How to pass a constant or literal data via an attribute while instantiating dart web component? 看起来建议是 attribute=value,但是这会尝试 设置一个不存在的成员变量。
【问题讨论】:
-
我不确定我是否理解,为什么你的
x-container不能带有用于逻辑的proportion实例字段? -
我可以 - 但似乎不正确。在这种情况下,作为容器的作者,我知道比例。但是假设在我的容器内部,我正在使用另一个名为 weather_summary 的小部件,该小部件由其他没有 proportion 概念的开发人员编写。同样的问题也成立。我不知道这样使用 html 属性是否是一种滥用。如果没有,似乎没有理由不允许在组件实例化时设置 html 属性。最终,内容提供者可以使用 html 属性将信息盲目地传递给组件的容器,而不是组件本身。
-
现在我明白了。将
x-weather-summary包裹在x-container中,其中包含proportion。这是我知道的唯一方法。在 WPF/XAML 中,这种东西可以写成<Label Grid.Row="0">,这很好,但是我们在 Web UI 中没有那种打点能力。也许为 Web UI 项目提交一个错误并提出意见。 -
谢谢。 x-container 代码遍历子项以查找 html 属性 proportion。 x-container 不需要自己的proportion。如果它有 5 个孩子,每个孩子通过他们的 proportion html 属性请求 20% 的区域,那么它可以使用 他们的 来布局。 Web UI 由代码生成驱动。有一组 allowed 属性(name、extends、constructor、apply-author-styles )。其他人在组件上生成对 setter 的调用,如果它不存在,则会发生错误。为什么不,而不是错误,如果 setter 存在调用它,如果没有设置 html 属性。有用吗?
标签: dart dart-webui