2016-03-09 54 views
1

我有这个模板:如何从控制器评估模板?

<div class="container-fluid"> 
    <div class="row"> 
    <div class="col-xs-12" ng-repeat="product in ad.products"> 
     <a href="{{product.link}}"> 
     <h1>{{product.title}}</h1> 
     <img src="{{product.src}}"> 
     <p>{{product.description}}</p> 
     <h5>{{product.price}}</h5> 
     </a> 
    </div> 
    </div> 
</div> 

从我的控制器,我需要评估这个模板,以便它检查多少产品已选定,然后将它插每个产品的值到模板中。在完成之后,我还需要删除ng-repeat,这样它不会在外部页面中引发错误,这些错误将在不存在角度的情况下使用。然而,我认为我只是使用正则表达式来查找ng-repeat和表达式中的所有内容,然后将其删除。

我一直在寻找$interpolate$compile但我无法弄清楚如何与他们从我的控制器工作,以便我想要做什么。这是因为当我在我的模板上使用这些模板,然后控制台记录模板值时,这是一个有很多无稽之谈的函数。

所以这样做:

ad.html = $compile(res.data, $scope); 

生成这样的事情:

function(b,c,d){rb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var h=d.parentBoundTranscludeFn,k=d.transcludeControllers;d=d.futureParentElement;h&&h.$$boundTransclude&&(h=h.$$boundTr… 

有人可以阐明如何实现我想要的一些轻?

回答

1

您正在使用$ compile功能的方式错误,您应该通过如下所示的$scope参数调用$compile(html)功能。

var compiledDOM = $compile(res.data)($scope);//then do append this DOM to wherever you want 
ad.html = compiledDOM.html(); //but this HTML would not make angular binding working. 
+0

好吧,似乎编译它,但如何得到一个HTML片段,而不是从一个DOM对象?它也吐出了很多根无限摘要错误。 – Chrillewoodz

+0

@Chrillewoodz我可能知道为什么你需要这样做,因为将html的一部分加入不会使角度绑定可行吗?尽管可能通过编译DOMOM.html()或OR编译DOM [0] .innerHTML' –

+0

因为我需要将片段发送到后端,然后将其存储并将其用作静态HTML。但我不知道如何得到这个片段,因为就像你说它不评估角度绑定那么..嗯。 – Chrillewoodz