Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何仅在实例化web组件时初始化html属性_Dart_Dart Webui - Fatal编程技术网

Dart 如何仅在实例化web组件时初始化html属性

Dart 如何仅在实例化web组件时初始化html属性,dart,dart-webui,Dart,Dart Webui,假设您有一个自定义组件容器。该组件将 查看其中的任何html元素,并根据自定义 这些元素的html属性。例如,假设有一个 可按如下方式使用的比例属性: <x-container> <div proportion="0.2"> ... </div> <div proportion="0.5"> ... </div> <div proportion="0.3"> ... </div>

假设您有一个自定义组件容器。该组件将 查看其中的任何html元素,并根据自定义 这些元素的html属性。例如,假设有一个 可按如下方式使用的比例属性:

<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>

...
...
...
通常,容器组件本身没有或不需要 比例成员变量,仅其包含的html元素可以 具有html属性。但是由于容器可以是一个 包含的元素我希望它能够有这样一个html 属性如何在实例中设置html属性 组件,而不尝试在 不存在且不应存在的成员变量

从答案来看 看起来这个建议是attribute=value,但是这个尝试
设置一个不存在的成员变量。

如果您能够将您的需求转换为css而不是比例属性,则可以使用以下方法完成您想要的任务

在我的组件中,我将视图对象传递给组件,并且视图对象具有样式属性,该属性基于指定给视图对象的值动态生成

在下面的部分示例中,在我的组件dart代码中,我使用运行时传递的视图对象计算样式和类属性

  CardView view;
  String get cardClass => 'piece ${view.type} card classic clickable';
  Map get cardStyle => view.styles;  
在我的html代码中,我引用了这些getter,如图所示

<element name="x-playing-card" constructor="PlayingCardComponent" extends="div">
  <template>
      <div class="{{cardClass}}"  on-click="select()"
        style="{{cardStyle}}">
      </div> 
  </template>
  <script type="application/dart" src="xplayingcard.dart"></script>
</element>


通过类似的方式,我认为您可以实现与“比例”属性相同的功能,但是使用css。

事实证明,存在一个阻止设置html属性的错误

展望未来:

当修复程序发布时,我们将能够设置html属性而无需绑定它们。此外,还将有一个新的需求来指定要绑定哪些实例化属性。在html实例化中指定但在组件元素定义的attributes=.中未指定的任何属性。。。将作为组件的html属性传递。此外,一般来说,当将数据从html实例化传递到html属性时(通过不将它们添加到attributes=…),最佳做法是将它们命名为data一些唯一的前缀-*,然后可以通过组件的数据集映射访问它们

讨论:


这些功能正在积极开发中,所以请期待更改。

我不确定我是否理解,为什么您的
x-container
不能有一个
比例
实例字段用于逻辑?我可以,但似乎不正确。在这种情况下,作为容器的作者,我知道比例。但假设在我的容器中,我使用的是另一个叫做weather_summary的小部件,它是由其他一些没有比例概念的开发人员编写的。同样的问题也存在。我不知道这样使用html属性是否是一种滥用。如果不是,似乎没有理由不允许在组件实例化时设置html属性。通常,内容提供者可以使用html属性将信息盲目地传递给组件容器,而不是组件本身。将
x-weather-summary
包装在一个
x-container
中,该容器具有
比例
。这是我知道的唯一方法。在WPF/XAML中,这种东西可以像
那样编写,这很好,但我们在Web UI中没有这种点画功能。也许为Web UI项目提交一个bug并提高声音。谢谢。x-container代码在子对象上迭代以查找html属性比例。x-container不需要自己的比例。如果它有5个子项,每个子项通过其比例html属性请求20%的区域,那么它可以使用它们的布局。Web UI由代码生成驱动。有一组允许的属性(名称、扩展、构造函数、应用作者样式)。其他人在组件上生成对setter的调用,若该组件不存在,则会发生错误。为什么不,而不是错误,若setter存在,调用它,若并没有设置html属性。可能有用吗?谢谢-也许我不明白。元素的html属性集实际上是一个字典。一些键被采用(即标准化:id、样式、标题等),其他键则没有(比例、我的_数据等)。在实例化的时候,客户端可以在地图中填充内容,以便应用程序可以看到它。在本例中,您将数据cardClass从代码传递到html属性类。有用,但我认为不同的用例。