【问题标题】:SVG Ionic Angular and external scriptSVG Ionic Angular 和外部脚本
【发布时间】:2018-01-11 09:47:30
【问题描述】:

我的目标是检索对 svg 的点击。

svg 是一个包含一些 <rect /> 的文件,其中包含要在 app 内导航的数据,(app 包含在 electron 模块中)。

所以,我找到了一个很好的从svg调用外部javascript的教程

svg

    document.getElementById("svgroot").addEventListener("click", sendClickToParentDocument, false);

    function sendClickToParentDocument(evt)
    {
        // SVGElementInstance objects aren't normal DOM nodes, so fetch the corresponding 'use' element instead
        var target = evt.target;
        if(target.correspondingUseElement)
            target = target.correspondingUseElement;

  // call a method in the parent document if it exists
  if (window.parent.svgElementClicked)
            window.parent.svgElementClicked(target);
        else
            alert("You clicked '" + target.id + "' which is a " + target.nodeName + " element");
    }

index.html

function svgElementClicked(target)
{
    var s = document.getElementById("status");
    s.textContent = "A <" + target.nodeName + 
    "> element with id '" + target.id + 
    "' was clicked inside the <" + 
    target.ownerDocument.defaultView.frameElement.nodeName.toLowerCase() + 
    "> element.";
}    

运行良好,但我使用Ionicelectron,我需要检索app 中的目标。

我试图在 main.ts 或任何 .ts 中移动外部函数,但我收到了警报(window.parent.svgElementClicked 可能为空)。

我试图传递一个全局变量,但同样的问题,变量从未填写app

那么,我该如何解决这个问题呢?

感谢您的帮助。

【问题讨论】:

    标签: javascript angular svg ionic2 electron


    【解决方案1】:

    此代码不适用于 angular。

    您必须按如下方式编辑您的 svg 矩形:

    在您的组件中定义 onClick()。 onClick 将发出一个事件。这意味着要定义一个输出 EventEmitter;

    一些阅读:https://teropa.info/blog/2016/12/12/graphics-in-angular-2.html

    【讨论】:

    • 你能更精确一点吗?当 svg 内联时,我可以毫无问题地在 中注入(点击),但是当 svg 作为对象加载时问题就来了。然后所有angular 的东西都坏了。谢谢。
    • 你能更精确一点吗?当 svg 内联时,我可以毫无问题地在 中注入(点击),但是当 svg 作为对象加载时问题就来了。然后所有angular 的东西都坏了。谢谢。
    • 我的意思是你的 svg 文件必须是一个角度组件。像您一样直接访问和使用 dom 将无法正常工作。在这种情况下,就会出现不良行为。 1/ 创建 mysvgcomponent 2/ 在 mysvgcomponent.component.html 中复制您的 svg 文件内容 3/ 在应用程序/和组件中定义您的逻辑
    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多