Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 省道聚合:如何在创建时在自定义中设置非字符串字段_Dart_Dart Polymer - Fatal编程技术网

Dart 省道聚合:如何在创建时在自定义中设置非字符串字段

Dart 省道聚合:如何在创建时在自定义中设置非字符串字段,dart,dart-polymer,Dart,Dart Polymer,我正在写一个聚合物应用程序。我将聚合物元素扩展如下: @CustomTag(“自定义元素”) 类CustomElement扩展了聚合关系{ @公布名单年份; CustomElement.created():super.created(); } 相应的html: 列出的年份是 {{year} 在条目html文件中引用的dart脚本中,从服务器获取一些数据后,我会动态创建以下元素: initPolymer()。运行(){ querySelect(“#自定义元素”).children.add(

我正在写一个聚合物应用程序。我将聚合物元素扩展如下:

@CustomTag(“自定义元素”)
类CustomElement扩展了聚合关系{
@公布名单年份;
CustomElement.created():super.created();
}
相应的html:


列出的年份是
{{year}

在条目html文件中引用的dart脚本中,从服务器获取一些数据后,我会动态创建以下元素:

initPolymer()。运行(){
querySelect(“#自定义元素”).children.add(
新元素.tag(“自定义元素”)
…id=“我的自定义元素”
);
});
如果
CustomElement
中的
years
设置为某个值,那么给定的代码工作正常,现在我想在主脚本中设置它。如果属性
years
String
类型,那么我只需将最后一块更改为

initPolymer()。运行(){
querySelect(“#自定义元素”).children.add(
新元素.tag(“自定义元素”)
…id=“我的自定义元素”
..setAttribute(“年”、“2010年”)
);
});
但问题是我需要设置一个完整的
列表
,而不是一个值。我想不出一个办法。我该怎么办?欢迎提出解决方案和建议

编辑: 因此,我的主要脚本如下所示

void main(){
//实际上,此列表是从服务器获取的
列出客户年数=[‘2010’、‘2011’];
initPolymer()运行(){
querySelect(“#自定义元素”).children.add(
新元素.tag(“自定义元素”)
…id=“我的自定义元素”
//这里我想设定一个公共领域*年*
//自定义元素的定义
//以下方法不起作用
// 1.
//..setAttribute('年',自定义年)
//异常:未捕获错误:“列表”类型不是“值”的“字符串”类型的子类型。
// 2.
//..setAttribute('years',toobserval(customYears))
//异常:未捕获错误:“ObservableList”类型不是“value”类型“String”的子类型。
// 3.
//…年=年
//..年=可观测(自定义年)
//NoSuchMethodError:找不到方法:“years=”
);
});
}

所以问题是,如何在类本身之外为CustomElement实例的非字符串成员字段赋值?类内的直接赋值不会导致任何问题,但这不是我想要的。我希望我现在能更清楚地解释自己。

试着简单地为字段赋值:

导入“包:观察/观察.dart”;
initPolymer()运行(){
querySelect(“#自定义元素”).children.add(
新元素.tag(“自定义元素”)
…id=“我的自定义元素”
..年=可观测([“2010”])
);
});
通常在主要聚合物元素中使用自定义元素,并且年份等属性与其范围有关:


@CustomTag(“主元素”)
类main元素扩展了聚合关系{
@发布的列表年份=toObservable([“2010”]);
mainlelement.created():super.created();
}

基本上@Ozan回答了您的实际问题,但还有一个问题。 代码赋值时,元素尚未完全初始化。这就是Dart失败的原因,它告诉您HtmleElement没有设置器。添加
Polymer.onReady.then()后,
Polymer完全初始化,分配工作正常

提示:如果将创建的元素强制转换为其具体类型,则在DartEditor中不会收到警告

import'包装:polymer/polymer.dart';
导入“dart:html”;
//添加了导入以便能够使用该类型
导入“custom_element.dart”;
void main(){
//实际上,此列表是从服务器获取的
列出客户年数=[‘2010’、‘2011’];
//聚合物=>0.16.0
initPolymer().然后((区域)=>zone.run(){
Polymer.onReady.then((){//added-等待onReady
查询选择器(“自定义元素”).children.add(
(new-Element.tag('custom-Element')作为CustomElement)
…id=“我的自定义元素”
..年=可观测(自定义年));
});
}));
}
向自定义元素添加构造函数更方便,如

import'包装:polymer/polymer.dart';
导入“dart:html”;
@CustomTag('custom-element')
类CustomElement扩展了聚合关系{
工厂自定义元素(){
final x=新元素.tag('custom-Element');
返回x;
}
CustomElement.created():super.created();
@公布名单年份;
}
然后您可以创建如下元素

querySelector(#自定义元素”).children.add(
新附录()
…id=“我的自定义元素”
..年=可观测(自定义年));
另见


我不清楚实际问题是什么?您想在哪里设置列表?你能补充更多细节吗?