我对Angular相对较新,这是我第一次尝试使用自定义指令。我有一个我正在使用的表,每个单元格都有一个数据属性。例如," data-dept =" service",我想在用指令覆盖它之前访问该值。在我的指令中,我设置了template = true,这将删除我的数据属性。
我喜欢我的网站,我正在努力更好地解释我想要做的事情。 http://partnerportal-preprod.automate-webservices.com/list/#/hoursTable
第一行中表格内的单元格是可点击的,但我想知道用户是否点击了服务,例如。
我创建了plunker来更好地说明我的问题。 我有一个基本表,我使用指令来替换表中的行。 在这样做时,我失去了我需要将其设置为我的对象中的键以供以后使用的属性。
http://plnkr.co/edit/oXRM6lRkidnAHfBA4GsR?p=preview
<tr>
<td name="valueIneed" hello-world>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
app.directive('helloWorld', function($parse) {
return {
template: '<td><input type="text"></td>',
replace: true,
transclude: 'true',
scope: {
position: '='
},
link: function (scope,element,attrs,ngModel) {
console.log(attrs.attribute);
scope.clickMe = function () {
console.log('clicked');
scope.isChecked = true;
};
}
};
});
答案 0 :(得分:1)
首先删除replace: true
。
第二次,以查看name
属性的值:
console.log(attrs.name);
通过使用replace: true
,该指令正在替换具有name
属性的元素。
replace:true
已弃用 1 来自文档:
replace
([已弃用!],将在下一个主要版本中删除 - 即v2.0)指定模板应替换的内容。默认为
false
。
true
- 模板将替换指令的元素。false
- 模板将替换指令元素的内容。
- AngularJS Comprehensive Directive API
来自GitHub:
Caitp--它被弃用了,因为
replace: true
存在已知的非常愚蠢的问题,其中一些问题无法以合理的方式得到解决。如果你小心并避免这些问题,那么对你有更多的权力,但为了新用户的利益,告诉他们更容易,这会让你头疼,不要这样做&#34;。