我在这个问题上进行了大量搜索,但没有得到任何实际可行的解决方案来满足我的需求。
问题:我想在单击具有columnDef为[{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);
};
上面的代码更新了field01的datagrid JSON,但它没有调用ng-click函数。我在ui-grid Plunkr中引用了两个带有外部作用域的Plunkr,另一个在gridoptions中定义了一个方法并在本地调用它Plunkr(在这个plunker中,ng-click被调用但是当我尝试检查editUser函数中的值,它没有按预期工作)。
答案 0 :(得分:6)
您需要使用appScope,请参阅http://ui-grid.info/docs/#/tutorial/305_appScope。
你还需要一个合理的ui-grid版本,因为appScope函数在rc16或rc18附近发生了变化。