Событие углового нажатия JS не работает в столбце wijgrid

Я использую компонент wijgrid в Angular JS там у меня возникла проблема, что не удается выполнить события щелчка на нем. В Wijgrid HTML-компоненты не скомпилированы, найти HTML-код

<wij-grid  id = "dataGrid" allow-sorting="true" data="data" columns-autogeneration-mode="none" allow-paging="true" >
  <columns>
     <column data-key="name" header-text="Name"></column>
     <column data-key="address" header-text="Address" ></column>
     <column data-key="submit" header-text="Submit"></column>
   </columns>
</wij-grid>     

и мой угловой код JS

$http.get(url,data).success(
        loadData);  

function loadData(responseData) {
if (responseData != null) {
    var data = responseData;
    for (index = 0; index < data.length; index++) {
        data[index].address =   data[index].addressLineOne+","+data[index].addressLineTwo;                                  
        $SubmitBtn  = "<a href='javascript:void(0);ng-click='submitCode("+data[index].reviewId+",true)'>Approve</a>";   data[index].submit=$ASubmitBtn;                                     
    }
    $scope.data = data;
    $("#content").wijtabs();
  }
}    
$scope.submitCode= function(id, status) {
alert(id+" "+status)
} 

ЗДЕСЬ функция отправки кода не вызывается, и в исходном представлении функция отображается с идентификатором и статусом. Это означает, что она не компилируется в модуле wijgrid. Пожалуйста, помогите мне найти решение. Я пытался скомпилировать код $compile($sumitBtn)($scope), но он не работает, пожалуйста, предложите мне s0lution

2 ответа

Решение

Я получил решение с помощью метода cellformatter там я изменил код в соответствии с моим требованием

$scope.formatter = function(args) {
if(args.row.dataRowIndex < 0 ) 
return false;
args.$container
.html($compile(
args.formattedValue)
($scope));
return true;    
}   

Wijmo знает об этой проблеме и говорит, что это известная ошибка. Обходной путь, который я использую, таков:

  $scope.cellStyleFormatter = function(args) {
  if ((args.row.type & wijmo.grid.rowType.data) && (args.row.state & wijmo.grid.renderState.rendering)) {
        var content = args.$cell[0].innerHTML;
        //Here I have button html already in my grid data, using 
        //'my-link-class' css
        if(content.indexOf("my-link-class") > -1) {
            var scope = angular.element("#grid-container").scope();
            args.$cell
                .empty()
                .append($(content).click(function () {
                    scope.myControllerClickHandler();
                })
            );
        }
        return true;
    }
    };

И я объявляю свою сетку так:

    <wij-grid  data="template.model.content" allow-editing="false" cellStyleFormatter="cellStyleFormatter">
      <columns>
        <column dataKey="col_0" ></column>
      </columns>
    </wij-grid>

Я использую cellStyleFormatter выше, потому что я могу применить его глобально ко всей сетке. Вы можете использовать cellFormatter, если вы знаете столбец заранее (в моем приложении есть переменное число столбцов, поэтому для меня это не вариант). Вы бы ссылались на args.container вместо args.$ Cell, если используете cellFormatter.

Вот ссылка на объяснение Wijmo: http://wijmo.com/topic/wig-grid-with-angularjs-how-to-handle-click-on-a-link-in-a-cell/

Другие вопросы по тегам