0

当使用自定义指令单击该项目时,我将一些HTML附加到模型项目中。在附加html中访问ng-repeat重复数据

我的代码:

<div appenddata> 
    <div ng-repeat="model in models"> 
     <label ng-bind="model.name"></label> 
    </div> 
<div> 

directive('appenddata', function($compile) { 
    // click handlers 
    $(element).after("<p ng-bind='model.name'></p>); 
    $compile(html)(scope); 
}); 

是否有可能访问该附加HTML模型项目的数据?

+1

你真的应该让控制器驱动你的看法。点击事件应该修改控制器中的数据,并且视图应该对数据更改作出相应的反应,这会让你的生活更容易相信我。使用$ compile,$ eval和类似的东西只有非常罕见的用例。 – mpm

+0

我有大约250件物品。当我加载所有的项目,该应用程序是非常缓慢的设备。所以我想通过这种方式尝试,以便只在点击时填充DOMDOWN – Joseph

+0

请参阅http://binarymuse.github.io/ngInfiniteScroll/以及它如何工作,它可能会给你一些想法。 – Chandermani

回答

1

就像评论中提到的,你真的不应该自己向DOM注入数据。如果您需要更改DOM中显示的数据量,请对您的ng-repeat使用过滤器。

此外,ng-repeat中的250个项目不应该足以减慢页面的速度,除非每个项目上都发生了相当大的处理。我建议使用类似Angular Batarang的文件来分析您的应用程序,看看实际上导致它变慢的原因。

0

是的,它是可能的,我最近问的东西simular:

Create div with angular variable as attribute value

此代码建议:

angular.element($("#canvas")).injector().invoke(function($compile) { 
    var scope = angular.element($("#canvas")).scope(); 
    var compiledImg = $compile('<img id="editImage" ng-src={{ImageToEdit}}>')(scope); 
    $("#canvas").replaceWith(compiledImg); 
});