Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在AngularJS中实现工厂功能的范围_Javascript_Angularjs_Angularjs Scope_Ui Grid - Fatal编程技术网

Javascript 如何在AngularJS中实现工厂功能的范围

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:

我有一个ng网格,其选项如下:

$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);