這是我plunker例如:http://plnkr.co/edit/Tc9FRHAEoQlOqy7sk1Ae?p=preview爲什麼我不能在cellTemplate中綁定輸入類型「複選框」?
我想要做的事:用cellTemplate 綁定的複選框HTML從我的數據的單元格field04,仍然可以訪問它的NG-點擊功能。
代碼在app.js:從index.html的
var app = angular.module('app', ['ui.grid', 'ngSanitize']);
app.controller('MainCtrl', ['$scope', '$log', function ($scope, $log, $sce) {
$scope.myViewModel = {
someProp:'abc',
showMe : function(){
alert(this.someProp);
}
};
$scope.gridOptions = {
};
$scope.gridOptions.columnDefs = [
{ name: 'field01', field: 'field01' },
{ name: 'field02', field: 'field02'},
{ name: 'field03', field: 'field03', cellTemplate: '<input type="checkbox" ng-model="row.entity.field03" ng-click="$event.stopPropagation();getExternalScopes().showMe()">'},
{ name: 'field04', field: 'field04', cellTemplate: 'viewTemplate2'},
{ name: 'field05', field: 'field05', cellTemplate: 'viewTemplate2'}
];
$scope.gridOptions.data = [
{
"field01": "one",
"field02": "01",
"field03": false,
"field04": '',
"field05": '',
},
{
"field01": "two",
"field02": "02",
"field03": false,
"field04": '',
"field05": '',
},
{
"field01": "three",
"field02": "03",
"field03": false,
"field04": '<input type="checkbox" ng-model="row.entity.field03" ng-click="$event.stopPropagation();getExternalScopes().showMe()">',
"field05": '<div><a href="#" title="icon link"><img class="icon" alt=""/></a></div>',
}
];
$scope.toggle = function() {
alert("toggled");
}
}]);
代碼:
<body>
<div ng-controller="MainCtrl">
<div ui-grid="gridOptions" external-scopes="myViewModel" class="grid"></div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular-sanitize.min.js"></script>
<script src="app.js"></script>
<script type="text/ng-template" id="viewTemplate2">
<span ng-bind-html="row.entity[col.field]"></span>
</script>
</body>
如果我寫的columnDef的HTML我實現field03正確的效果。感謝TomMorgan的闖入者:http://plnkr.co/edit/9eRg9Yjl2ooeSuWMJ8x2?p=preview。
我可以用field05中的數據填充cellTemplate。
爲什麼它不適用於field04中的複選框?
我是angularjs的新手,很難從「ng-grid」解決方案中分離出「ui-grid」解決方案。我很感激幫助。
有沒有你不能把你想要的一個理由columnDefs中cellTemplate中的HTML?是否因爲你想要的HTML會作爲你的數據進入?你爲field03實現它的方式將是正確的做法。使用ui-grid(即ng-grid 3.0)時,您希望將自定義HTML放在cellTemplate中。 – nairys 2014-12-19 02:01:54
當數據進來時,我必須以某種方式過濾它。例如,field03是「權限」,如果「權限」:「canEdit」爲真,我需要顯示一個編輯圖標。此外,該行項目可能有一個鏈接到它的文檔,如果需要的話,我需要在field03中的「canEdit」圖標旁邊顯示一個文檔鏈接圖標。 在「ui-grid」中我無法弄清楚如何在數據加載到網格中時運行這樣的腳本。我可以在jqgrid中使用 afterInsertRow:function(rowid,data){} – amadis77 2014-12-19 19:29:40
您可以使用角度構建自定義過濾器來處理該邏輯。然後你可以調用該列的過濾器,如下所示:'{name:'field04',field:'field04',cellFilter:'myNewFilter'}' – nairys 2014-12-19 19:46:07