好的......我有一个模板:
<th width="{{setWidth(1)}}%">{{deal}}</th>
我有一个指令:
.directive('tableheaders', function($window,$compile) {
return function(scope) {
var th = document.getElementsByTagName('th');
for (var i = 0; i < th.length; i++) {
console.log(th[i].width); // returns "{{setWidth(1)}}%" need "100%"
}
如何编译正在发送的宽度值,以便我可以使用它?
答案 0 :(得分:0)
您可以使用$timeout
或jqLite函数ready()
等待DOM准备就绪并且{{setWidth(1)}}%
已经过评估。
使用$timeout
:
app.directive('tableheaders', function($timeout) {
return function(scope) {
$timeout(function () {
var th = document.getElementsByTagName('th');
for (var i = 0; i < th.length; i++) {
console.log(th[i].width);
}
});
};
});
使用ready
:
app.directive('tableheaders', function() {
return function(scope, element) {
element.ready(function () {
var th = document.getElementsByTagName('th');
for (var i = 0; i < th.length; i++) {
console.log(th[i].width);
}
});
};
});
或者您可以使用$interpolate
手动执行评估:
app.directive('tableheaders', function($interpolate) {
return function(scope, element) {
var th = document.getElementsByTagName('th');
for (var i = 0; i < th.length; i++) {
var expression = $interpolate(th[i].width);
var width = expression(scope);
console.log(width);
}
};
});