我在一个指令中动态生成一个表模板,在compile属性中:
compile : function (tElem, tAttrs, test) {
$http.get(tAttrs["source"]+"/0/1/true").success(
function(result) {
// adding angular expressions for adding data in table
var tr = '<tr ng-repeat="item in data track by $index" >';
for (var name in result[0]) {
console.log(name);
tr += '<td>{{ item.'+name+' }}</td>';
}
tElem.find("tbody").append(tr+'</tr>');
});
return function(){ ... }
}
但是表达式没有被评估,我只得到
{{ item.id }} {{ item.currMtmDate }} {{ item.prevMtmDate }} {{ item.user }} {{ item.description }}
显示在我的页面上。
如果我这样做
var v = 'currMtmDate';
var b = '<tr ng-repeat="item in data track by $index"><td>{{ item.'+v+' }}</td></tr>';
tElem.find("tbody").append(b);
然后它运作良好。
我不知道为什么它适用于第二个例子而不是第一个例子。
答案 0 :(得分:0)
一种很好的方法是使用ng-include标记创建一个div并更新该标记:div ng-iclude="templateUrl"></div>
然后在$ http.get