这是我的控制器
$scope.usersList = {}; $scope.usersList = { paginationPageSizes: [10,15, 20], paginationPageSize: 10, columnDefs: [ { name: 'userId', cellTemplate: '<div class="ui-grid-cell-contents"><a ui-sref="appSetting.userSelected({userId: row.entity.userId})">{{ row.entity.userId }}</a></div>' }, { name: 'firstName' }, { name: 'lastName' }, { name: 'emailId' }, { name: 'action', cellTemplate: '<div>' + ' <button ng-click="grid.appScope.sampledetails()">Delete</button>' + '</div>', enableSorting: false, enableColumnMenu: false } ] };
这是我的.cshtml
<div id="grid1" ui-grid="gridOptions" class="grid"></div>
我想这样写,以便在其他.cshmtls中使用它,但是columnDefs取决于表列名而有所不同。我应该如何以这样的方式编写该用户应在分页指令中为columnDefs提供指令?
您的问题很难理解,希望我理解正确。您想为网格定义默认设置,但需要时允许用户输入一些特殊设置吗?
在您自己的指令中扭曲ui-grid。将所需的参数传递给该指令,并在指令中创建默认设置。
您的.cshtml。您将设置变量传递给它。
<my-grid options="usersList" />
您的指令。在此处获取设置(请参阅选项:“ =”),并将其绑定到控制器或示波器。
angular.module('app').directive('myGrid', myGrid); function myGrid() { return { templateUrl : 'grid.html', controller : 'GridCtrl', controllerAs : 'grid', restrict: 'E', scope: { options : '=', }, bindToController: true, }; }
您的控制器。现在,您可以在该控制器中访问您的设置。在那里,您可以将默认设置与插入的设置结合起来,并将其传递到指令模板。
angular.module('app').controller('GridCtrl', GridCtrl); function GridCtrl() { var grid = this; console.log(grid.options); // containts your settings grid.gridOptions = { paginationPageSize: grid.options.paginationPageSize, ..., columnDefs: grid.options.columnDefs etc } }
然后将您的grid.html将组合的设置传递到grid-API中。
<div id="grid1" ui-grid="grid.gridOptions" class="grid"></div>
还有更多细节需要提防,但这就是可能的设置。
e:我为另一个类似的问题做了一个Plunkr。备查。