2015-07-10 35 views
3

我有以下的控制器......我想從一個HTML輸入namerating attibute,但我得到的錯誤TypeError: angular.element(...).getAttribute is not a function的getAttribute值與角

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> 

是否有另一種方法可以做到這一點?

回答

14

按照文檔 「https://docs.angularjs.org/api/ng/function/angular.element」,得到你需要使用

.attr('name'); 

代替

.getAttribute('name'); 

重要

你傳入this元素的屬性在你的html中,這裏this不會傳遞DOM元素到th e函數,而是指範圍。要通過當前元素傳遞$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; 
} 

僅供參考 - http://plnkr.co/edit/ZQlEG33VvE72dOvqwnpy?p=preview

+0

這對我給予未定義 –

+0

不應該納克點擊是否點擊? – nikhil

+0

Typo,它實際上是'ng-click' - 更新問題 –