自定义组件的动态创建
Dynamic creation of custom components
我正在尝试动态创建我创建的自定义组件的实例。我认为正确的方法是使用 new Element.tag('custom-component');
,但这会为我产生以下堆栈跟踪:
method not found: 'constructor' on null
my_component_test.dart.browser_test.dart.js 21834:17 J.$index$asx
my_component_test.dart.browser_test.dart.js 22460:14 <fn>
unparsed my_component_test.dart.browser_test.dart.js 22583:42 Isolate.prototype.(anonymous function)
my_component_test.dart.browser_test.dart.js 16549:24 dart._setUpPropertyChanged
my_component_test.dart.browser_test.dart.js 16521:28 $async$initPolymer
my_component_test.dart.browser_test.dart.js 3319:13 _wrapJsFunctionForAsync_closure._captured_protected_1
my_component_test.dart.browser_test.dart.js 4292:14 _wrapJsFunctionForAsync_closure.dart._wrapJsFunctionForAsync_closure.call
my_component_test.dart.browser_test.dart.js 5945:18 dart._rootRunUnary
my_component_test.dart.browser_test.dart.js 8620:41 _CustomZone.dart._CustomZone.runUnary
my_component_test.dart.browser_test.dart.js 6906:80 _Future__propagateToListeners_handleValueCallback.dart._Future__propagateToListeners_handleValueCallback.call[=10=]
但是,使用 Element.html('<custom-component></custom-component')
和覆盖的空 TreeSanitizer
,如此处所述 http://japhr.blogspot.de/2013/11/dynamically-generating-polymerdart.html,一切正常,测试通过:
class NullTreeSanitizer implements NodeTreeSanitizer {
void sanitizeTree(node) {}
}
componentUnderTest = new Element.html('<my-component></my-component>', treeSanitizer: new NullTreeSanitizer());
我的设置可能有什么问题?如果我禁用检查,该组件似乎已正确实施和注册,因为它可以正常工作。
当我 运行 没有 pub serve
的测试时,我可以重现错误消息。
运行 来自包含 pubspec.yaml
文件的目录
pub serve test
(它应该打印它在端口 8080 上侦听)
然后 运行 测试
pub run test -pdartium --pub-serve=8080
我正在尝试动态创建我创建的自定义组件的实例。我认为正确的方法是使用 new Element.tag('custom-component');
,但这会为我产生以下堆栈跟踪:
method not found: 'constructor' on null
my_component_test.dart.browser_test.dart.js 21834:17 J.$index$asx
my_component_test.dart.browser_test.dart.js 22460:14 <fn>
unparsed my_component_test.dart.browser_test.dart.js 22583:42 Isolate.prototype.(anonymous function)
my_component_test.dart.browser_test.dart.js 16549:24 dart._setUpPropertyChanged
my_component_test.dart.browser_test.dart.js 16521:28 $async$initPolymer
my_component_test.dart.browser_test.dart.js 3319:13 _wrapJsFunctionForAsync_closure._captured_protected_1
my_component_test.dart.browser_test.dart.js 4292:14 _wrapJsFunctionForAsync_closure.dart._wrapJsFunctionForAsync_closure.call
my_component_test.dart.browser_test.dart.js 5945:18 dart._rootRunUnary
my_component_test.dart.browser_test.dart.js 8620:41 _CustomZone.dart._CustomZone.runUnary
my_component_test.dart.browser_test.dart.js 6906:80 _Future__propagateToListeners_handleValueCallback.dart._Future__propagateToListeners_handleValueCallback.call[=10=]
但是,使用 Element.html('<custom-component></custom-component')
和覆盖的空 TreeSanitizer
,如此处所述 http://japhr.blogspot.de/2013/11/dynamically-generating-polymerdart.html,一切正常,测试通过:
class NullTreeSanitizer implements NodeTreeSanitizer {
void sanitizeTree(node) {}
}
componentUnderTest = new Element.html('<my-component></my-component>', treeSanitizer: new NullTreeSanitizer());
我的设置可能有什么问题?如果我禁用检查,该组件似乎已正确实施和注册,因为它可以正常工作。
当我 运行 没有 pub serve
的测试时,我可以重现错误消息。
运行 来自包含 pubspec.yaml
文件的目录
pub serve test
(它应该打印它在端口 8080 上侦听) 然后 运行 测试
pub run test -pdartium --pub-serve=8080