Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Aurelia:是否有任何选项/装饰器将属性限制为特定元素_Aurelia_Aurelia Templating - Fatal编程技术网

Aurelia:是否有任何选项/装饰器将属性限制为特定元素

Aurelia:是否有任何选项/装饰器将属性限制为特定元素,aurelia,aurelia-templating,Aurelia,Aurelia Templating,您好,我已经创建了一个名为“panel”的自定义元素和一个自定义属性“panel type”。我想限制此“面板类型”只能在“面板”元素中使用。有办法吗 <panel value.bind='panel' panel-type='default'></panel> --应该有用。但没有其他元素可以使用“面板类型”。像- <some-other-tag panel-type='default'></some-other-tag> --如果看

您好,我已经创建了一个名为“panel”的自定义元素和一个自定义属性“panel type”。我想限制此“面板类型”只能在“面板”元素中使用。有办法吗

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

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

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


--如果看不到自定义属性的代码,就不应该工作

——我无法根据您的具体需求进行调整——但这是很容易做到的

在自定义属性中,您可以访问
元素
属性,该属性是您将属性附加到的物理元素。因此,您可以简单地使用本机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
        }
    }
 }
从“aurelia框架”导入{inject,LogManager};
@注入(元素)
导出类panelTypeCustomAttribute{
allowedElememt=false;
构造函数(元素){
this.element=元素;
if(this.element.tagName==“PANEL”){
this.allowedElement=true;
}否则{
LogManager.getLogger('testCustomAttribute').warn(“面板类型自定义属性只能用于元素”);
}
}
foo(){
//然后可以在任何方法中检查allowedElement标志;
if(此.allowedElement){
//做你的事
}
}
}

您的自定义属性在做什么?我们能看到代码吗?@BlueFox自定义元素没有做任何特定的操作。我刚开始学奥雷莉亚。就我自己的知识而言,使用自定义属性听起来太过分了<代码>@bindable panelType在您的面板组件中足以满足您的用例。BYI,您可以像在那里所做的那样,将纯字符串传递给绑定表。谢谢您的解决方案。但我正在寻找一行代码。可能有一些注释。“可能有一些注释”?类似于@restrict“element name”的注释。可能是greatOh,你是说一个装饰师。据我所知,没有一个装饰师能满足你的要求。您可以在这里看到模板装饰器;