2015-12-20 1 views
0

Я построил сетку ui, у которой есть столбец для редактирования, информация о сетке заполняется json. После нажатия на столбец редактирования открывается модальный. Я хочу, чтобы пользователь мог редактировать строку, которую он нажал. Пока мне удалось вернуть весь json-объект модальному, но мне трудно понять, как превратить этот объект в строку, которую я хочу отредактировать. У меня есть переменная с именем ClickedRow, которая возвращает идентификатор hashkey $$, но я не уверен, как получить к нему доступ. Я попробовал утилиту forEach, но она не работает. Я новичок в angularjs может кто-нибудь мне помочьВозвращает объект json в модальном виде к сетке и редактирует его в Angularjs

Это мой контроллер:

import {safeApply} from 'ems'; 
    import modalTemplate from './modal/modal.html'; 
    import controller from './modal/modal.controller.js'; 

    class AssetsController { 
     /* @ngInject */ 
     constructor(AssetsService, $uibModal, $state) { 
     this.label = 'Assets Controller !!'; 
     this.assetsService = AssetsService; 
     this.assetModal= $uibModal; 
     this.$state = $state; 
     var assetsData; 
     var clickedRow; 
     this.assetsService.resolvePromise().then((response) => { 
      this.gridOptions.data = response; 
      assetsData = this.gridOptions.data; 
      //console.log(response); 
      safeApply(); 
     }); 
     this.modalOptions ={ 
      template: modalTemplate, 
      controller: controller, 
      size: 'large', 
      backdrop: false, 
      resolve: { 
      assetData: function(){ 
       console.log('number 2'+clickedRow); 
       return [clickedRow, assetsData]; 

      } 
      } 
     }; 
     this.myAppScopeProvider ={ 
      modal: this.assetModal, 
      modalOptions: this.modalOptions, 
      open:function(row){ 
      console.log('number 1'+row); 
      clickedRow = row; 
      this.modal.open(this.modalOptions) 
      } 
      }; 
     this.initialize(); 

     } 


     initialize() { 

     this.gridOptions = { 
      paginationPageSizes: [15, 30, 45], 
      paginationPageSize: 9, 
      rowHeight: 50, 
      enableRowSelection: true, 
      enableRowHeaderSelection: false, 
      multiSelect: false, 
      enableColumnResizing: true, 
      enableSelectAll: false, 
      noUnselect: true, 
      columnDefs: [ 
      { 
       field: 'Thumbnail', 
       displayName: '', 
       width: 100, 
       cellTemplate: '<span class="glyphicon glyphicon-picture" aria-hidden="true"></span>' 
      }, 
      { 
       field: 'File Name', 
       displayName: 'File Name', 
       cellClass:'blue', 
       width: 100 
      }, 
      { 
       field: 'Description_', 
       displayName: 'Description', 
       minWidth: 150 
      }, 
      { 
       field: 'Edit_', 
       displayName: 'Edit', 
       cellTemplate: '<button class="btn btn-link pull-right" ng-click="grid.appScope.open(row)">Edit</button>', 
       cellClass:'blue', 
       width: 100 
      }, 
      { field: 'Uploaded_Date', displayName: 'Upload Date'}, 
      { field: 'Uploaded_By'}, 
      { field: 'File_Size' }, 
      { field: 'File_Source'}, 
      { field: 'In_Use'}, 
      { 
       field: 'Lock_Status', 
       displayName: '', 
       cellClass:'black', 
       cellTemplate: '<span class="glyphicon glyphicon-lock" aria-hidden="true">' 
      } 
      ], 
      onRegisterApi:function (gridApi) { 
      this.gridApi = gridApi; 
      }, 
      appScopeProvider: this.myAppScopeProvider, 
      rowTemplate:'' 
     }; 

     } 
    } 

    export default AssetsController; 


class ModalController { 
    /* @ngInject */ 
    constructor($scope, $uibModalInstance, assetData) { 
    this.label = 'Modal Controller !!'; 
    this.scope = $scope; 
    this.scope.assetData = assetData; 
    } 
    initialize() { 
    /* this.modalService.resolvePromise().then((response) => { 
     this.data = response.data; 
    });*/ 
    } 
} 

export default ModalController; 

ответ

0

Pass row.entity в качестве параметра к вашему open метода:

<button class="btn btn-link pull-right" ng-click="grid.appScope.open(row.entity)">Edit</button> 

Вы должны объявить resolve объект в вашем методе open, чтобы вы могли списать entity:

open: function (entity) { 
    this.modalOptions.resolve = { 
     entity: entity 
    } 
    this.modal.open(this.modalOptions) 
} 

Вводят entity в свой модальный контроллер, и вы хорошо идти

Вот рабочий пример на Plunker: http://plnkr.co/edit/Agvcc6CZFBvQQLRpQeRk?p=preview

+0

когда я пытаюсь и объявить мое решение в моей открытой функции я получаю ошибку поставщика? – Christopher

+0

Работает для меня, добавлен пример моего ответа, чтобы вы могли проверить – iH8

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