Javascript 如何在angular中更改html元素的属性?

Javascript 如何在angular中更改html元素的属性?,javascript,angularjs,Javascript,Angularjs,我有一个元素,它是通过我的API调用自动生成的 <a target="_blank" href="http://www.work.com/reward"><b class="orange tdu">My Work History</b></a> 现在我想像这样修改它 <a ng-click="message(messageItem.id)"> i、 我想删除原始属性并添加angulars ng单击 我不能使用JQuery。在

我有一个元素,它是通过我的API调用自动生成的

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

现在我想像这样修改它

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

i、 我想删除原始属性并添加angulars ng单击


我不能使用JQuery。

在您的控制器中尝试这样做

1:选择元素并使用删除不需要的属性

元素。删除属性(“目标”

2:使用在元素上添加必需属性

element.setAttribute('ng-click', 'loadMicrosite(messageItem.id)'); '' you can use string concatenation for messageItem.id 
3:现在您在DOM中有了更新的元素,但它还没有附加到作用域中。使用$compile。根据$compile

将HTML字符串或DOM编译为模板并生成模板函数,然后可以使用该函数将作用域和模板链接在一起

$compile

var-app=angular.module('app',[]);
app.controller('mainCtrl',函数($scope,$compile){
var sNew=document.querySelector('a');
新删除属性(“目标”);
sNew.removeAttribute(“href”);
sNew.setAttribute('ng-click','loadMicrosite(messageItem.id');
$compile(sNew)($scope);
$scope.loadMicrosite=函数(参数)
{
警惕(“我被叫”);
}
});

您可以从api获取html,并使用
窗口打开页面。打开

在html中:

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

到目前为止,你尝试过什么吗?没有什么特别的……但是我正在考虑通过document.getElementById选择该元素并更改该属性……但是我不知道如何做到这一点,仅仅添加属性是行不通的——你需要根据
$scope
重新编译HTML,以使
ngClick
得到识别。为什么不使用
window.location
在您的javascript函数中?请添加一些解释,说明为什么此代码有助于OP。这将有助于提供一个未来观众可以从中学习的答案。有关更多信息,请参阅。当然@Mikemcaughan会用详细信息更新答案。如果我有多个
元素,您还可以告诉我应该怎么做………我是否循环每个元素并对每个其他元素执行相同的操作。您可以这样做,但首先检查您为什么需要这样的实现,如果可能的话,只需从自动生成部分获取链接文本,并使用该文本创建新元素。这不是您在示例中所做的吗…….删除属性,然后添加新元素
$scope.loadMicrosite = (id) ->
  url = getStringOfUrlFromServer
  window.open(
  url,
  '_blank');