ui-grid angularjs 单元格模板中的自定义指令
custom directive in cell template in ui-grid angularjs
我定义了一个ui-grid来显示数据,我定义了一个单元格模板来设置列的样式。同时我还创建了一个指令,这里我只是将它添加到单元格模板中。但是 link 函数执行时间低于预期。
这是 plunker 上的全部内容:LINK
var app = angular.module("app", ['ui.grid']);
app.controller("dataCtrl", function ($scope, $element, $attrs) {
var vm = this;
vm.gridOptions = {
data: "ctrl.dataList",
columnDefs: [
{
name: "ID",
displayName: "User ID",
width: 200
},
{
name: "Name", displayName: "User Name",
cellTemplate: "<div class=\"ui-grid-cell-contents\" pop-tip><span style=\"margin-left:5px\">{{row.entity[\"Name\"]}}</span></div>"
}
],
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
noUnselect: true,
};
vm.dataList = [];
vm.loadData = function () {
for (var i = 1; i <= 100; i++) {
var user = {};
user.ID = i;
user.Name = 'user ' + i;
vm.dataList.push(user);
}
}
vm.loadData();
});
app.directive("popTip", function ($compile) {
return {
restrict: 'A',
scope: false,
link: function ($scope, $element, $attrs) {
console.log($scope.row.entity.Name);
}
};
})
可以获取浏览器日志查看link执行的时间
结果是当数据量大出现垂直滚动时,当我们拖动滚动条时,自定义指令将不再执行link功能。
很可能 quite 有一些优化 built 到 ui-grid,由此他们重用已经-linked 的行元素,而不是比 link 个新的。
您可以通过 $watch
-ing 范围内的更改来检查(并且,它应该可以满足您的需求):
link: function ($scope, $element, $attrs) {
//console.log($scope.row.entity.Name);
$scope.$watch("row.entity.Name", function(v){
console.log(v);
});
}
这将在滚动时显示所有行。
我定义了一个ui-grid来显示数据,我定义了一个单元格模板来设置列的样式。同时我还创建了一个指令,这里我只是将它添加到单元格模板中。但是 link 函数执行时间低于预期。
这是 plunker 上的全部内容:LINK
var app = angular.module("app", ['ui.grid']);
app.controller("dataCtrl", function ($scope, $element, $attrs) {
var vm = this;
vm.gridOptions = {
data: "ctrl.dataList",
columnDefs: [
{
name: "ID",
displayName: "User ID",
width: 200
},
{
name: "Name", displayName: "User Name",
cellTemplate: "<div class=\"ui-grid-cell-contents\" pop-tip><span style=\"margin-left:5px\">{{row.entity[\"Name\"]}}</span></div>"
}
],
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
noUnselect: true,
};
vm.dataList = [];
vm.loadData = function () {
for (var i = 1; i <= 100; i++) {
var user = {};
user.ID = i;
user.Name = 'user ' + i;
vm.dataList.push(user);
}
}
vm.loadData();
});
app.directive("popTip", function ($compile) {
return {
restrict: 'A',
scope: false,
link: function ($scope, $element, $attrs) {
console.log($scope.row.entity.Name);
}
};
})
可以获取浏览器日志查看link执行的时间
结果是当数据量大出现垂直滚动时,当我们拖动滚动条时,自定义指令将不再执行link功能。
很可能 quite 有一些优化 built 到 ui-grid,由此他们重用已经-linked 的行元素,而不是比 link 个新的。
您可以通过 $watch
-ing 范围内的更改来检查(并且,它应该可以满足您的需求):
link: function ($scope, $element, $attrs) {
//console.log($scope.row.entity.Name);
$scope.$watch("row.entity.Name", function(v){
console.log(v);
});
}
这将在滚动时显示所有行。