2016-12-15 87 views
0

我想在我的指令中编译html以通过jquery移入表中。

出于某种原因,我的$编译并没有抓住这整个字符串,它只是抓住重复指令。 如果我删除<tr ng-repeat...>,它会抓住剩余的字符串。

var el = $compile('<tr ng-repeat="row in gotData" ><td>{{row["data"]}}</td> <td>{{row["moredata"] % 5 |number:3}}</td> <td>{{row["moredata2"] % 5 | number:3}}</td><td>{{row["moredata3"] % 5 | number: 3}}</td><td>{{row["moredata"] % 5 | number: 3}}</td></tr>')(scope) 

我登录了“厄尔尼诺”,我可以看到,它是缺乏完整的字符串,它只是位于这里,在这个关键的重复指令:

el['0']['data'] 

希望这是可能的。

+0

gotData是函数还是项集合? – yyou

+0

问题 - 你什么时候加载gotData?外部指令或内部指令?如果在外面,则检查当ajax调用完成时是否运行指令(并且值已绑定到可通过ng-if指令解决的已完成ajax调用的指令) – Melzar

+0

gotData在控制器的作用域中可用。我希望它可以从控制器范围中获得,而不是来自指令的范围。但是,相同的对象位于单独的双向绑定范围'='上。 – user3738936

回答

1

从Angular文档中查看该源代码。

var $compile = ...; // injected into your code 
var scope = ...; 
var parent = ...; // DOM element where the compiled template can be appended 

var html = '<div ng-bind="exp"></div>'; 

// Step 1: parse HTML into DOM element 
var template = angular.element(html); 

// Step 2: compile the template 
var linkFn = $compile(template); 

// Step 3: link the compiled template with the scope. 
var element = linkFn(scope); 

// Step 4: Append to DOM (optional) 
parent.appendChild(element); 

您必须在使用$ compile编译代码之前对代码进行angularify操作。

希望,这会有所帮助。祝一切顺利。

+0

https://jsfiddle.net/nwu2bjtt/我不知道如果我复制你在这里有什么正确的,但我不能追加父母。我担心父母是一个关键词,所以我改变了它。 – user3738936

0

你需要做这样的事情。

var throbberHolder = document.getElementById("throbber-mask"); 
$compile(throbberHolder)(angular.element(throbberHolder).scope()); or 
$compile(throbberHolder)(throbberHolder.scope()); 

在该throbber-mask将是你<tr>元素的id

+0

我将添加一个小提琴,范围不可用,它被称为。 – user3738936

+0

https://jsfiddle.net/o8v7jmwc/ – user3738936

+0

https://jsfiddle.net/o8v7jmwc/创建var打破页面 – user3738936