angularJS如何在指令中修改属性link
angularJS how to change attrs in directive's link
我在应用程序中设置了一个进度
我想在angular指令
中控制进度但是我怎么能改变data-value
和data-total
在指令的链接函数?
app.html
<div class="ui indicating small progress" data-value="39" data-total="50" plan-progress>
<div class="bar">
<div class="progress"></div>
</div>
</div>
在这个html中,我想改变data-value
和data-total
我试试这个:
app.js
todoApp.directive('planProgress', function() {
return {
link: function(scope, elem, attrs) {
attrs.value = 10
attrs.total = 20
elem.progress();
}
};
});
但是行不通
所以我想知道如何在我的指令中改变它?
在链接函数中使用attrs.$set()
并重新编译元素。另外,不要忘记在你的指令中注入$compile
服务。在你的html中,你已经添加了指令作为一个属性,但没有在指令定义的限制值中提到它。你需要在指令定义中提到它。请看下面的代码:
todoApp.directive('planProgress', function($compile) {
return {
restrict: 'A',
link: function(scope, elem, attrs) {
attrs.$set('value', 10);
attrs.$set('total', 20);
$compile(elem)(scope);
}
};
});
直接使用:
attrs["data-value"] = 10;
attrs["data-total"] = 20;
您不希望使用attrs.data-total = 20
,因为-
将强制减法。
在javascript中使用x[keyName]
而不是x.keyName
总是合法的,并且当keyName是一个奇怪的键(如**$^ùjsls*
或data-value
)时,您必须使用第二种符号。更有用的情况是当键是一个变量时。
最后一件事:当你这样做时,你将总是重写编码器的输入。它可能有意义,但不是很优雅。
相关文章:
- 如何通过JQuery修改样式属性
- 在运行时修改innerhtml属性
- 通过emberJS中的控制器修改组件的属性
- HTML&JS-如何修改CSS类的属性
- js添加封装来修改属性值
- 检查所有元素的属性并修改另一个元素
- 选择单选输入时修改占位符属性
- Lodash搜索对象属性并修改值
- 复选框的checked属性的修改不会;工作不正常
- JavaScript-我可以用for循环中修改的属性将新结构推送到数组中吗
- 修改时,哪些DOM元素属性会导致浏览器执行回流操作
- 有没有一种方法可以在一次调用中修改每个jquery对象的特定属性
- 从 React 中的自定义元素中修改属性
- AngularJS:修改指令中的transcluded属性键
- 如何使用 jQuery 修改属性 ROWSPAN
- 使用javascript修改属性文件
- 在jQuery中修改属性的最短方法
- 如何动态修改属性(onmouseover)
- Angular 在 forEach 或纯 For 时修改属性
- angularJS如何在指令中修改属性link