ui-grid : 指令作为 cellTemplate
ui-grid : directive as cellTemplate
我正在使用具有以下数据结构的 ui-grid :
{
name: String,
tags: [{label: String, image: String}]
}
因此网格将有 2 列:名称和标签。行条目可以有多个关联的标签(因此数组)。
每个标签都有两个属性:标签和图像,图像文件的路径。
我创建了一个显示标签的指令(例如 directiveTags):
为了简单起见:
<div>{{tag.label}}<img ng-src={{tag.image}}></div>
如何在 gridOptions 的 cellTemplate 属性 中使用此指令?
我的想法是这样的:
columnDefs: [
{ field: 'name'},
{ field: 'tags',
cellTemplate : "<div ng-repeat="tag in tags"><directive-tags></directive-tags></div>"
},
非常感谢帮助。
查看 custom row templates 的文档,我们可以看到 row
对象可以从行模板访问,例如:grid.appScope.fnOne(row)
。按照示例并尝试 运行 这个, row
对象被记录到控制台。 row
包含 entity
键,这是存储行数据的地方。
你的例子非常接近,你只需要用 tag in row.entity.tags
替换 tag in tags
并将你的指令重命名为不包含破折号(因为我之前没有使用过指令并且正在在我的第一杯咖啡上,我也卡住了一段时间,指令名称中的破折号无法解析)。
这是一个笨蛋:http://plnkr.co/edit/P1o1GolyZ5wrKCoXLLnn?p=preview
var testApp = angular.module('testApp', ['ui.grid']);
testApp.directive('directivetags', function() {
return {
restrict: 'E',
template: '<div>{{tag.label}}<img ng-src={{tag.image}}></div>',
replace: true
}
});
testApp.controller('TestCtrl', function($scope) {
$scope.grid = {
rowHeight: 50,
data: [{
name: 'Test',
tags: [{
label: 'Suwako Moriya',
image: 'http://i.imgur.com/945LPEw.png'
}]
}],
columnDefs: [
{ field: 'name'},
{ field: 'tags',
cellTemplate: '<div style="height: 50px" ng-repeat="tag in row.entity.tags"><directivetags></directivetags></div>'
}
]};
});
我正在使用具有以下数据结构的 ui-grid :
{
name: String,
tags: [{label: String, image: String}]
}
因此网格将有 2 列:名称和标签。行条目可以有多个关联的标签(因此数组)。 每个标签都有两个属性:标签和图像,图像文件的路径。
我创建了一个显示标签的指令(例如 directiveTags):
为了简单起见:
<div>{{tag.label}}<img ng-src={{tag.image}}></div>
如何在 gridOptions 的 cellTemplate 属性 中使用此指令? 我的想法是这样的:
columnDefs: [
{ field: 'name'},
{ field: 'tags',
cellTemplate : "<div ng-repeat="tag in tags"><directive-tags></directive-tags></div>"
},
非常感谢帮助。
查看 custom row templates 的文档,我们可以看到 row
对象可以从行模板访问,例如:grid.appScope.fnOne(row)
。按照示例并尝试 运行 这个, row
对象被记录到控制台。 row
包含 entity
键,这是存储行数据的地方。
你的例子非常接近,你只需要用 tag in row.entity.tags
替换 tag in tags
并将你的指令重命名为不包含破折号(因为我之前没有使用过指令并且正在在我的第一杯咖啡上,我也卡住了一段时间,指令名称中的破折号无法解析)。
这是一个笨蛋:http://plnkr.co/edit/P1o1GolyZ5wrKCoXLLnn?p=preview
var testApp = angular.module('testApp', ['ui.grid']);
testApp.directive('directivetags', function() {
return {
restrict: 'E',
template: '<div>{{tag.label}}<img ng-src={{tag.image}}></div>',
replace: true
}
});
testApp.controller('TestCtrl', function($scope) {
$scope.grid = {
rowHeight: 50,
data: [{
name: 'Test',
tags: [{
label: 'Suwako Moriya',
image: 'http://i.imgur.com/945LPEw.png'
}]
}],
columnDefs: [
{ field: 'name'},
{ field: 'tags',
cellTemplate: '<div style="height: 50px" ng-repeat="tag in row.entity.tags"><directivetags></directivetags></div>'
}
]};
});