【问题标题】:AngularDart CustomEvent listener from JS Event来自 JS 事件的 AngularDart CustomEvent 监听器
【发布时间】:2017-07-23 17:28:59
【问题描述】:

我正在尝试将工作的 JavaScript 事件侦听器移植到 AngularDart。

在 AngularDart 中,我确认(通过警报“ready!”)调用了初始的“app-ready”文档事件侦听器,但没有收到后续事件消息。我缺少什么可以让 AngularDart 像 JavaScript 代码一样接收后续事件消息?

下面是一个有效的 JavaScript 事件监听器:

document.addEventListener('app-ready', function() {
    app.listen(function(message) {
        switch (message.name) {
            case "name1":
                alert(message.payload.message);
                break;
            case "name2":
                alert(message.payload.message);
                break;
        }
    });
});

下面是我尝试将上面的 JavaScript 移植到我的 AngularDart 中:

import 'dart:js';
import 'dart:html';
import 'dart:async';

class AppComponent implements OnInit {
    ngOnInit() async {
        document.on["app-ready"].listen((CustomEvent message) {
            context.callMethod('alert', ['ready!']);
            app.listen(_eventReady(message));
        });
    }
    Future _eventReady(CustomEvent message) async {
        var messageEvent = new JsObject.fromBrowserObject(message);
        if (messageEvent['name'] == "name1") {
            context.callMethod('alert', [messageEvent['payload']['message']]);
        }
        if (messageEvent['name'] == "name2") {
            context.callMethod('alert', [messageEvent['payload']['message']]);
        }
    }
}

【问题讨论】:

    标签: javascript dart angular-dart dom-events dart-html


    【解决方案1】:

    您应该可以只在第一部分使用dart:html

    import 'dart:html';
    
    void main() {
      document.on['app-ready'].listen((event) {
        // ...
      });
    }
    

    我需要更多背景信息来帮助您解决第二个问题。

    【讨论】:

    • 感谢 matanlurey。是的,我正在使用“html”。我可以在包含的 JavaScript 中捕获并显示该消息,但无法在 dart 中执行相同的操作。后端发送的事件格式为:{"name":"window.cmd.message","targetID":"1","message":{"name":"name1","payload":{ "message":"message1"}}}
    • 可能是时间问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多