2013-11-22 4 views
1

Я использую wijgrid компонент в угловых JS там у меня проблема, которая не в состоянии выполнить событие нажатия на it.in wijgrid HTML компоненты не компилируется, найти HTML кодУгловая JS нажмите событие не работает в wijgrid Colum

<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

ответ

0

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

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

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/

+0

Привет Эдвардс, Спасибо за ваш ответ, я попытался это пример, который работает только для статических данных .. но в этом случае я получаю данные динамически и использует функции события вызова с reviewId. Я не могу использовать cellFormater и cellStyleFormatter в этом случае. Пожалуйста, предложите мне любой способ использовать это. – Satish

+0

Вы имеете в виду, что вы меняете данные во время выполнения? Мои данные также поступают из удаленного сервиса, но я обновляю $ location.path для каждого обновления, которое заставляет контроллер перезагружать и повторно создавать сетку, что то же самое, что уничтожать и воссоздавать wij-сетку. Кроме того, если еще не слишком поздно для вашего проекта отказаться от wijmo, это, вероятно, лучший курс. –

Смежные вопросы