2016-05-28 6 views
0

私はこの1つで同じ問題を抱えていますWhy ui grid value drop-down box will be assigned in the event fires before beginCellEdit in angular 少し違いがあります。 editDropdownOptionArrayを更新しても、それはまだ古い値を保持しています。次のクリックで新しい値のみを保持します。angle-ui-gridのgridApi.on.edit.beginCellEditで新しいドロップダウンオプションを即座に更新できないのはなぜですか?

誰もが私にこれを手伝ってくれることを願っています。 ありがとうございます。ここ

は私のコードスニペットである:

ドロップダウンのHTML:

<div> 
    <form name="inputForm"> 
     <select ng-class="'colt' + col.uid" 
       ui-grid-edit-dropdown 
       ng-model="MODEL_COL_FIELD" 
       ng-options="field CUSTOM_FILTERS for field in editDropdownOptionsArray"></select> 
    </form> 
</div> 

コントローラコード:

$scope.menuColumns = [ 
         { displayName: 'Menu', field: 'name', enableCellEdit: false }, 
         { 
          displayName: 'Access Level', field: 'accessLevelName', 
          editableCellTemplate: 'Scripts/application/role/directive/dropdown-menu-assignment.html', 
          editDropdownValueLabel: 'Access Level', editDropdownOptionsArray: userMgtConstant.menuAccessLevel 
         } 
        ]; 

        $scope.menuOptions = { 
         data: [], 
         onRegisterApi: function (gridApi) { 
          gridApi.edit.on.beginCellEdit($scope, function (rowEntity, colDef, event) { 
           if (rowEntity.parent === true) { 
            colDef.editDropdownOptionsArray = $scope.levelList; 
           } else { 
            colDef.editDropdownOptionsArray = $scope.childLevelList; 
           } 
          }); 
          gridApi.edit.on.afterCellEdit($scope, function (rowEntity, colDef, newValue, oldValue) { 
           if (rowEntity.parent !== true) { 
            if(rowEntity.name === 'Revenue Bench'){ 
             var accessLevel = commonUtils.getIdFromName(rowEntity.accessLevelName, userMgtConstant.menuAccessLevel); 
             if(accessLevel > 1){ 
              $scope.isShowFunctionAssignment = false; 
             } else if(rowEntity.functionAssignments.length !== 0) { 
              $scope.isShowFunctionAssignment = true; 
             } 
            } 
           } else { 
            // udpate child dropdown list menu 
            var index = _(userMgtConstant.menuAccessLevel).indexOf(newValue); 
            $scope.childLevelList = $scope.levelList.filter(function (item, i) { 
             return i >= index; 
            }); 

            if($scope.childLevelList.length > 2){ 
             parentSwitch = true; 
            } 

            if($scope.childLevelList.length < 3 && parentSwitch){ 
             colDef.editDropdownOptionsArray = $scope.childLevelList; 
             parentSwitch = false; 
            } 

            // update all child value 
            _($scope.menuOptions.data).each(function (dataItem) { 
             if (dataItem.parent !== true) { // prevent infinite loop 
              dataItem.accessLevelName = newValue; 
             } 
            }); 
           } 
          }); 
         } 
        }; 

ここでは、グリッドの使用である:

<inline-edit-grid options="menuOptions" columns="menuColumns"></inline-edit-grid> 

答えて

2

OK editDropdownRowEntityOptionsArrayPath代わりのドキュメントからeditDropdownOptionsArray

の使用に:ドロップダウンの内容が行バッキング エンティティに依存する場合

editDropdownRowEntityOptionsArrayPatheditDropdownOptionsArrayの代替として使用することができます。ここで

あなたは非常に多くのtutorial

+0

おかげへのリンクです。私の問題はあなたのガイドで解決されました。 – TakiNT

関連する問題