你知道如何从指令内部访问属性值吗?
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代码是:
<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>
谢谢
发布于 2013-04-30 20:55:29
尝试attrs["dataKey"]
-这是html使用破折号(-
)解析属性的方式。如果您想要来自作用域的值而不是{{something}}
,您可以做两件事:
scope[attrs['dataKey']]
-可以工作,但不应该这样做
或者使用$parse
,但不使用{{}}`
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
,但是使用{{}}
发布于 2015-05-19 02:36:48
如果你的属性是'data-key',只需要使用'key',而不是'dataKey‘。
发布于 2014-11-25 23:56:32
如果您在指令的link函数中,我建议您使用对象表示法,它将获取attrs参数:
attrs.yourAttributeName
https://stackoverflow.com/questions/16300258
复制相似问题