首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJs指令-如何从指令中获取属性值

AngularJs指令-如何从指令中获取属性值
EN

Stack Overflow用户
提问于 2013-04-30 20:44:30
回答 3查看 52.8K关注 0票数 16

你知道如何从指令内部访问属性值吗?

代码语言:javascript
复制
    angular.module('portal.directives', [])
        .directive('languageFlag', ['$routeParams', function(params) {
            return function(scope, element, attrs) {
                console.log(attrs["data-key"]); // returns undefined
                console.log(element.attr('data-key')); // returns {{data-key}}
                angular.element(element).css('border', '1px solid red');
            };
        }]);

Html代码是:

代码语言:javascript
复制
<ul>
    <li ng-repeat="lng in flags">
        <a class="lngFlag {{flag.Key}}" data-key="{{flag.Key}}" data-id="{{lng.Id}}" ng-click="changeLangHash({'lng':lng.Id })" language-flag></a>
    </li>
</ul>

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-04-30 20:55:29

尝试attrs["dataKey"] -这是html使用破折号(-)解析属性的方式。如果您想要来自作用域的值而不是{{something}},您可以做两件事:

scope[attrs['dataKey']] -可以工作,但不应该这样做

或者使用$parse,但不使用{{}}`

代码语言:javascript
复制
app.directive('languageFlag', ['$routeParams','$parse', function(params,$parse) {
  return function(scope, element, attrs) {
    var value =  $parse(attrs.dataKey)(scope);
    console.log(value);
    angular.element(element).css('border', '1px solid red');
  };
}]);

或者,您可以使用与$parse相同的方式使用$interpolate,但是使用{{}}

票数 10
EN

Stack Overflow用户

发布于 2015-05-19 02:36:48

如果你的属性是'data-key',只需要使用'key',而不是'dataKey‘。

票数 4
EN

Stack Overflow用户

发布于 2014-11-25 23:56:32

如果您在指令的link函数中,我建议您使用对象表示法,它将获取attrs参数:

attrs.yourAttributeName

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16300258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档