我试图用
Angular UI Grid (unstable version)渲染一个简单的表。
对于每一行,我需要一个按钮,当单击应该在我的父控制器处理。 @H_404_2@Plunker @H_404_2@使用Javascript: –
对于每一行,我需要一个按钮,当单击应该在我的父控制器处理。 @H_404_2@Plunker @H_404_2@使用Javascript: –
angular.module("app",['ui.grid','ui.grid.edit','ui.grid.selection','ui.grid.pagination','ui.grid.expandable','ui.grid.paging']).controller("appController",function($scope) { console.log("Controller is up."); $scope.data = []; for (var i = 0; i < 50; i++) { $scope.data.push({ fullName: "Name" + i,age: i }); } $scope.clickHandler = function(){ // this never gets invoked ?! console.log("Row Action click Handler."); }; $scope.gridOptions = { data: $scope.data,columnDefs:[ {name:'fullName',field:'fullName'},{name:'age',field:'age'},{name:' ',cellTemplate:'<div><button ng-click="clickHandler()">Click Here</button></div>'} ] }; });@H_404_2@HTML
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http://ui-grid.info/release/ui-grid-unstable.min.css"> <link rel="stylesheet" href="style.css"> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular-touch.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular-animate.js"></script> <script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script> <script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script> <script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script> <script src="http://ui-grid.info/release/ui-grid-unstable.js"></script> <link rel="stylesheet" href="http://ui-grid.info/release/ui-grid-unstable.css" type="text/css"> <script src="script.js"></script> </head> <body data-ng-app="app"> <h1>Angular UI Grid unstable</h1> <div data-ng-controller="appController"> <div class="grid" ui-grid="gridOptions"> Test </div> </div> </body> </html>@H_404_2@像代码一样,为了渲染动作按钮,我已经对列第三列使用了columnDefs和内联模板。 @H_404_2@问题 @H_404_2@点击按钮不起作用。我希望在点击时执行’$ scope.clickHandler’功能。此外,我应该能够将’name’作为参数传递给点击处理程序。
在新的电网中,一切都发生在孤立的范围内。所以他们添加了处理外部范围的功能。
@H_404_2@这是做什么
@H_404_2@在html中定义你的网格像这样:
<div class="grid" external-scopes="clickHandler" ui-grid="gridOptions">@H_404_2@还可以将外部作用域对象(带有可调用函数)添加到控制器中:
$scope.clickHandler = { onClick : function(value){ alert('Name: '+value); } };@H_404_2@最后定义你的cellTemplate这样:
{ name:'Action',cellTemplate: '<div><button ng-click="getExternalScopes().onClick(row.entity.fullName)">Click Here</button></div>' }@H_404_2@这是你的分叉Plunker