未评估AngularJS动态模板

时间:2014-07-24 14:53:34

标签: javascript angularjs

我在一个指令中动态生成一个表模板,在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);

然后它运作良好。

我不知道为什么它适用于第二个例子而不是第一个例子。

1 个答案:

答案 0 :(得分:0)

一种很好的方法是使用ng-include标记创建一个div并更新该标记:div ng-iclude="templateUrl"></div> 然后在$ http.get

的末尾更新变量'templateUrl'