2016-12-20 2 views
1

나는 원래 속성을 제거하고 angulars에게 NG 클릭을 추가 할 지금 내가각도로 html 요소의 속성을 변경하는 방법은 무엇입니까?

<a ng-click="message(messageItem.id)"> 

예처럼 수정할 자동으로

<a target="_blank" href="http://www.work.com/reward"><b class="orange tdu">My Work History</b></a> 

나의 API 호출을 통해 생성되는 요소가 그것에.

저는 JQuery를 사용할 수 없습니다.

+2

지금까지 시도한 것이 있습니까? – Deep

+0

아무것도 ......하지만 document.getElementById 통해 요소를 선택하고 그 속성을 변경할 생각입니다 ...하지만 그 방법을 모르겠습니다. – lakshay

+3

속성을 추가하면 작동하지 않을 것입니다 - 필요합니다. HTML을'$ scope'에 대해 다시 컴파일하면'ngClick'이 인식됩니다. – tymeJV

답변

1

컨트롤러에서 다음과 같이 시도해보십시오.

1 요소를 선택하여 불필요한 속성을 제거

element.removeAttribute("target");

2 :

element.setAttribute('ng-click', 'loadMicrosite(messageItem.id)'); '' you can use string concatenation for messageItem.id 

3를 사용하여 요소에 필수 속성을 추가 : 이제 DOM 만에 업데이트 된 요소가 그 아직 범위와 연결되어 있지. 그것을 위해 $ compile을 사용하십시오. 각도 별 문서 당 $

HTML 문자열 또는 DOM을 템플릿으로 컴파일하고 템플릿 함수를 생성하여 범위와 템플릿을 연결하는 데 사용할 수 있습니다.

https://docs.angularjs.org/api/ng/service/ $

var app = angular.module('app', []); 
 

 
app.controller('mainCtrl', function ($scope,$compile) { 
 
    
 
var sNew = document.querySelector('a'); 
 
sNew.removeAttribute("target"); 
 
sNew.removeAttribute("href"); 
 
sNew.setAttribute('ng-click', 'loadMicrosite(messageItem.id)'); 
 

 

 
$compile(sNew)($scope); 
 
    
 
$scope.loadMicrosite = function(param) 
 
{ 
 
    alert("I am called"); 
 
} 
 
    
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <a target="_blank" href="http://sprintweb.abc.com/sos-children-s-villages-of-india-new-delhi-delhi"><b class="orange tdu">SOS Children's Villages of India</b></a> 
 

 
</body> 
 
</html>

+1

이 코드가 OP에 도움이되는 이유에 대한 설명을 추가하십시오. 이렇게하면 미래의 시청자가 배울 수있는 답을 제공하는 데 도움이됩니다. 자세한 내용은 [답변]을 참조하십시오. –

+0

확실한 @MikeMcCaughan 세부 정보로 답변을 업데이트하십시오. – Deep

0

당신은 API에서 HTML을 얻을 수 컴파일하고 HTML에서 window.open

이있는 페이지를 엽니 다

<a ng-click="loadMicrosite(messageItem.id)"> 
    <b class="orange tdu">SOS Children's Villages of India</b> 
</a> 

계속에서 롤러 :

$scope.loadMicrosite = (id) -> 
    url = getStringOfUrlFromServer 
    window.open(
    url, 
    '_blank'); 
관련 문제