我不知道如何捕获嵌套元素引发的异常。
我想要的是这样的:
<error-handler>
<hard-worker></hard-worker>
</error-handler>
例如,该想法是在勤奋的工作中发出REST请求。当然,如果努力工作的人从REST服务器中获取错误,它将进行自己的错误处理。但最后它必须在某处/以某种方式显示错误消息。错误处理程序被认为是向用户显示错误(异常)的人。错误处理程序应该是可变的。例如,可能是错误处理程序日志消息或错误处理程序显示弹出窗口。
我在GitHub上更新了Polymer-Sample。它显示了两种讨论的方法:基于Eventbus的方法(已经存在)和新的DOM-Event方法。(我更喜欢的一种-清洁得多)
工作示例(Chrome)
https://rawgithub.com/MikeMitterer/DART-Sample-PolymerHelloWorld/master/build/index.html
代码:https:
//github.com/MikeMitterer/DART-Sample-PolymerHelloWorld/tree/master/web
关于我所做的一些详细信息:
index.html
<!DOCTYPE html>
<html>
<head>
<link rel="import" href="hello-world/hello-world.html">
<link rel="import" href="event-handler/event-handler.html">
<link rel="import" href="stopwatch/stopwatch.html">
<script type="application/dart">export 'package:polymer/init.dart';</script>
</head>
<body>
<h1>Hi first world!</h1>
<!-- event-handler should show some events coming in from hello-world -->
<event-handler>
<hello-world></hello-world>
</event-handler>
<script src="packages/browser/dart.js"></script>
</body>
</html>
hello-
world.html如果您单击“触发事件”按钮,则会触发事件。这也可能是错误消息...
<!DOCTYPE html>
<polymer-element name="hello-world">
<template>
<button on-click="{{increment}}">Click Me</button>
<button on-click="{{fireevent}}">Fire an event (received by event-handler)</button>
<p>Hello from inside a custom element! Clicks: {{count}}</p>
</template>
<script type="application/dart" src="hello-world.dart"></script>
</polymer-element>
hello-world.dart
import 'package:polymer/polymer.dart';
import 'package:event_bus/event_bus.dart';
import 'package:PolymerHelloWorld/globaleventbus.dart';
import 'dart:html';
import 'dart:math';
import 'package:json/json.dart' as JSON;
@CustomTag('hello-world')
class HelloWorldElement extends PolymerElement {
final EventBus _eventbus = new GlobalEventBus();
@observable int count = 0;
HelloWorldElement.created() : super.created();
void increment(Event e, var detail, Node target) {
count += 1;
_eventbus.fire(GlobalEventBus.basicClickEvent,"Test");
}
void fireevent(Event e, var detail, Node target) {
final Random random = new Random();
final Map json = { 'response' : 'Hi, this is a message', 'random' : random.nextInt(100)};
// Fires a JSON-Message
fire("hello-event",detail: JSON.stringify(json));
}
}
event-handler.html接收“你好事件”的模板
<!DOCTYPE html>
<polymer-element name="event-handler" on-hello-event="{{handleHelloEvent}}">
<template>
<style>
.error { color: red; }
</style>
<p class="error">EventHandler (Shows hello-world events!) Message: {{response}}, Random number: {{randomnumber}}</p>
<content></content>
</template>
<script type="application/dart" src="event-handler.dart"></script>
</polymer-element>
event- handler.dart实现在相应模板中定义的handleHelloEvent
import 'package:polymer/polymer.dart';
import 'package:json/json.dart' as JSON;
@CustomTag('event-handler')
class EventHandler extends PolymerElement {
@observable String response = "";
@observable int randomnumber = 0;
EventHandler.created() : super.created();
void handleHelloEvent(Event e, var detail, Node target) {
final Map json = JSON.parse(detail);
response = json['response'];
randomnumber = json['random'];
// Log to console
print("Received event! $detail");
}
}
就这样-如果您知道它的工作原理-就像馅饼一样容易!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句