我有下面的控制器...我试图从一个HTML输入中获取name
和rating
属性,但得到了错误TypeError: angular.element(...).getAttribute is not a function
app.controller('courseReview', function ($scope, $http) {
$scope.rateThis = function rateThis(el){
var elName = angular.element(el).getAttribute('name');
var rating = angular.element(el).getAttribute('rating');
document.getElementById(elName+'Rating').value = rating;
}
});
HTML
<div ng-controller="courseReview">
<!-- radio input -->
<input class="star-5" id="wstar-5" rating="5" type="radio" name="welcome" ng-click="rateThis(this)"/>
</div>
有没有其他方法可以做到这一点?
发布于 2015-07-10 15:27:06
根据文档"https://docs.angularjs.org/api/ng/function/angular.element",要获取元素的属性,您需要使用
.attr('name');
代替
.getAttribute('name');
重要
您在html中传递this
,这里this
不会将DOM元素传递给函数,而是引用作用域。要传递当前元素,请传递$event
HTML更改
ng-click="rateThis(this)"
到ng-click="rateThis($event)"
JS变更
$scope.rateThis = function rateThis($event){
var elName = angular.element($event.target).attr('name');
var rating = angular.element($event.target).attr('rating');
document.getElementById(elName+'Rating').value = rating;
}
https://stackoverflow.com/questions/31334869
复制相似问题