Sau*_*abh 2 javascript angularjs angular-ui-grid
我搜索了很多这个问题,但没有得到任何解决方案,实际上正在努力满足我的需求.问题:我想在单击具有columnDef as的复选框时选择行实体 [{name: 'field01', displayName: '', field: 'field01', cellTemplate: "<input type='checkbox' ng-model='row.entity.field01' ng-click='grid.appScope.myhello()' />"}.
我正在基于另一个JSON [更新工作代码]动态构建此columnDef
$scope.columnDef = function(){
var column = [{name: 'field01', displayName: '', field: 'field01', cellTemplate: "<input type='checkbox' ng-model='row.entity.field01' ng-click='grid.appScope.myhello(\"row.entity.field01\")' />"}], coltype = [];
angular.forEach($scope.columns, function(value, index){
coltype = [];
switch(value.type){
case "Number": coltype.push({type: "number"});
break;
case "String": break;
case "Boolean": coltype.push({editableCellTemplate: "ui-grid/dropdownEditor", cellFilter: "mapBool", editDropdownValueLabel: "bool", editDropdownOptionsArray: [{ id: 1, bool: 'Yes' },{ id: 2, bool: 'No' }] });
break;
case "Date": coltype.push({type: 'date', cellFilter: 'date:"MM/dd/yyyy"'});
break;
}
column.push(angular.extend({name: value.name, displayName: value.name, enableCellEdit: (value.edit.indexOf("No") != -1) ? false : true}, coltype[0]));
});
return column;
};
$scope.gridOptions.data = $scope.datagrid;
$scope.gridOptions.columnDefs = $scope.columnDef();
$scope.myhello = function(value){
console.log("It works!!! :-) " + value);
};
Run Code Online (Sandbox Code Playgroud)
上面的代码更新了field01的datagrid JSON,但它没有调用ng-click函数.我在ui-grid Plunkr中引用了两个带有外部作用域的Plunkr,另一个在gridoptions中定义了一个方法,并在本地调用了它Plunkr(在这个plunker中,ng-click被调用但是当我尝试检查editUser函数中的值时它没有按预期工作).
您需要使用appScope,请参阅http://ui-grid.info/docs/#/tutorial/305_appScope.
您还需要一个合理的最新版本的ui-grid,因为appScope函数在rc16或rc18附近更改.