【问题标题】:How to get a variable attribute of an HTML element?如何获取 HTML 元素的变量属性?
【发布时间】:2020-04-14 01:52:45
【问题描述】:

我有一个 ng-repeat,我在其中设置了一个属性,如下所示:

<div ng-repeat="item in itemsList"
     stepType="{{item.stepType}}">
     {{item.itemValue}}
</div>

item.stepType 可以有值 'task' 或 'action' 我正在尝试像这样获取属性“stepType”:

let stepType = el.getAttributeNode("stepType");
console.log(stepType.value);

我得到的结果是:

{{item.stepType}}

但预期的结果是taskaction

我也尝试使用函数getAttribute()获取属性,但结果是一样的。

我还注意到,在上面的代码中,如果我记录 stepType 的值而不是 stepType.value,我得到的对象看起来像这样 stepType: 'task'

我怎样才能得到期望值?

【问题讨论】:

    标签: javascript jquery html angularjs angularjs-ng-repeat


    【解决方案1】:

    如果属性名是normalized:

    <div ng-repeat="item in itemsList"
         step-type="{{item.stepType}}">
         {{item.itemValue}}
    </div>
    

    自定义AngularJS指令可以$observe属性:

    app.directive("stepType", function() {
        return {
            link: postLink
        };
        function postLink(scope, elem, attrs) {
            attrs.$observe("stepType", function(value) {
                console.log(value);
            });
        }
    })
    

    控制台将记录对属性内插值的更改。

    【讨论】:

    • 这确实有效 - attrs 让我得到任何否则没有得到评估的属性的值
    【解决方案2】:

    尝试删除双引号。替换这个

    <div ng-repeat="item in itemsList"
         stepType="{{item.stepType}}">
         {{item.itemValue}}
    </div>
    

    <div ng-repeat="item in itemsList"
         stepType={{item.stepType}}>
         {{item.itemValue}}
    </div>
    

    【讨论】:

    • 我得到相同的结果,没有变化
    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多