ng-click不能从ui-grid复选框cellTemplate工作

时间:2015-04-12 03:46:23

标签: javascript angularjs angular-ui-grid

我在这个问题上进行了大量搜索,但没有得到任何实际可行的解决方案来满足我的需求。 问题:我想在单击具有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函数中的值,它没有按预期工作)。

1 个答案:

答案 0 :(得分:6)

您需要使用appScope,请参阅http://ui-grid.info/docs/#/tutorial/305_appScope

你还需要一个合理的ui-grid版本,因为appScope函数在rc16或rc18附近发生了变化。