1

嗨,我创建了一个名为“panel”的自定义元素和一个自定义属性“panel-type”。我想限制这种“面板类型”只能在“面板”元素中使用。有没有办法做到这一点?

<panel value.bind='panel' panel-type='default'></panel>

- 应该管用。但没有其他元素可以使用“面板类型”。喜欢-

<some-other-tag panel-type='default'></some-other-tag>

——不应该工作

4

1 回答 1

1

如果没有看到您的自定义属性的代码 - 我无法根据您的特定需求进行定制 - 但很容易实现;

在您的自定义属性中,您可以访问Element属性 - 这是您附加属性的物理元素。因此,您可以简单地使用原生 JavaScript 来获取元素标签名称;

import {inject, LogManager} from "aurelia-framework";

@inject(Element)
export class panelTypeCustomAttribute {

    allowedElememt = false;

    constructor(Element) {
        this.element = Element;

        if(this.element.tagName == "PANEL") {
            this.allowedElement = true;
        } else {
            LogManager.getLogger('testCustomAttribute').warn("The panel-type custom attribute can only be used on <panel /> elements");
        }
    }

    foo() {
        // Then you can check for the allowedElement flag in any of your methods;
        if(this.allowedElement) {
            // Do your thing
        }
    }
 }
于 2017-06-01T08:15:59.480 回答