2014-08-28 103 views
0

之外我有下面的代码,这是一个ngRepeat内运作良好什么是设置ngRepeat迭代ngRepeat

<div ng-repeat="item in items"> 
    <ng-include src="itemView.html"> 
    <!-- ngincluded view "itemView.html" --> 
    {{item.title}} 
</div> 

现在我想在我的应用程序的其他地方使用itemView.html,不是最好的方法

这样做的最好方法是什么?

我意识到,一个选项将创建一个新的范围数组变量var singleItem=[myItem],并把<div ng-repeat="item in singleItem">周围,但有没有更多的角度?

回答

1

你可以使用ng-init。

主要的html:

<!-- use it with ng-repeat --> 
<div ng-repeat="item in items"> 
    <div ng-include src="template.url" onload='myFunction()'></div> 
</div> 

<!-- using anywhere else in your code ng-init="item=item[index]" --> 
<div ng-init="item=items[1]" ng-include src="template.url" onload='myFunction()'></div> 

<!-- template --> 
<script type="text/ng-template" id="template1.html"> 
    {{item.title}} 
</script> 
+0

为我工作 – pinoyyid 2014-08-28 07:25:46

1

由于您的项目详细信息是itemView.html模板的一部分,因此它是独立的。所以它可以在您的应用程序的任何地方使用,没有任何问题 为了让你可重复使用的模板独立的变量名的项目中,你可以在这样的指令,把它包装:

module.directive('reusableItem', function() { 
return { 
    restrict: 'E', 
    scope: { 
    myItem: '=item' 
    }, 
    templateUrl: 'itemView.html' 
}; 

});

用itemView.html中的myItem替换所有项引用。

将像这样使用: <可重复使用的项目我的项目=“项” > < /可重复使用的项目> 为你的情况。

第二个使用此相同的指令可能看起来像: <可重复使用的项目我的项目=“itemXyz” > < /可重复使用的项目>

什么,你还要做的是缓存你的模板,如果它正在多个地方使用。要做到这一点,你可以使用$templateCache

+0

你已经错过了问题的要点。 itemView模板包含对“item”的引用。除了将其包装在ngRepeat中,我该如何设置项目? – pinoyyid 2014-08-28 06:36:31

+0

将可重复使用的模板包裹在指令中并传递想要传递的数据。 – 2014-08-28 06:40:39