Javascript 如何在AngularJS中实现工厂功能的范围
我有一个ng网格,其选项如下:Javascript 如何在AngularJS中实现工厂功能的范围,javascript,angularjs,angularjs-scope,ui-grid,Javascript,Angularjs,Angularjs Scope,Ui Grid,我有一个ng网格,其选项如下: $scope.gridOptions = { enableRowSelection: true, enableSelectAll: true, selectionRowHeaderWidth: 35, rowHeight: 35, showGridFooter: false, enableColumnMenus: false, enableSorting: true, enableFiltering:
$scope.gridOptions = {
enableRowSelection: true,
enableSelectAll: true,
selectionRowHeaderWidth: 35,
rowHeight: 35,
showGridFooter: false,
enableColumnMenus: false,
enableSorting: true,
enableFiltering: true,
columnDefs: [
{
name: "",
field: "fake",
cellTemplate: '<div class="ui-grid-cell-contents" >' +
'<button value="Edit" ng-if="!row.inlineEdit.isEditModeOn" ng-click="row.inlineEdit.deleteRow($event)">Delete</button>' +
'<button value="Edit" ng-if="!row.inlineEdit.isEditModeOn" ng-click="row.inlineEdit.enterEditMode($event)">Edit</button>' +
'<button value="Edit" ng-if="row.inlineEdit.isEditModeOn" ng-click="row.inlineEdit.saveEdit($event)">Update</button>' +
'<button value="Edit" ng-if="row.inlineEdit.isEditModeOn" ng-click="row.inlineEdit.cancelEdit($event)">Cancel</button>' +
'</div>',
enableCellEdit: false,
enableFiltering: false,
enableSorting: false,
showSortMenu: false,
enableColumnMenu: false,
width: "10%"
},
{
name: 'Id',
visible: false
},
{
name: 'Key',
enableCellEdit: true,
cellTemplate: '<div class="ui-grid-cell-contents"><div ng-class="{\'viewr-dirty\' : row.inlineEdit.entity[col.field].isValueChanged }">{{row.entity[col.field]}}</div></div>',
width: "30%"
},
{
name: 'Value',
enableCellEdit: true,
cellTemplate: '<div class="ui-grid-cell-contents"><div ng-class="{\'viewr-dirty\' : row.inlineEdit.entity[col.field].isValueChanged }">{{row.entity[col.field]}}</div></div>',
width: "30%"
}
]
}
如果
result.data.IsOk
为真,如何从factory函数中刷新gridOptions.data
?如何从工厂访问scope?作为解决方案,您可以从$rootScope广播事件。
它将是这样的:
$rootScope.$broadcast("rowDeleted");
并在您有权访问$scope的地方处理该事件
$scope.$on("rowDeleted", deleteHandler);
我已经处理这个问题两天了。多亏了你,我才解决了这个问题。不客气。正如我看到的,为了定义是否应呈现“编辑”和“删除”按钮或“更新”和“取消”,您对ng if使用了相同的条件。最好为这两对按钮添加一些包装器,并仅对这些包装器使用ng if指令。在这种情况下,每个单元格只有2 ng if,而不是4 ng if。这种方法将提高网格的性能。
$scope.$on("rowDeleted", deleteHandler);