2016-04-28 5 views
0

$modalを開く関数を外部スコープから呼び出す必要があります。モーダルを閉じると結果が返されます。UIグリッド:カスタム関数からMODEL_COL_FIELDにアクセスするには?

<div class="ui-grid-cell-contents"> 
    <input ng-class="colt + col.uid" 
     ng-model="MODEL_COL_FIELD" ng-click="grid.appScope.openModal()"/> 
</div> 

と機能

$scope.openModal = function() { 
    var dialogScope = $scope.$new(); 
    dialogScope.result = ''; 

    var modalInstance = $modal.open({ 
    templateUrl: 'url here', 
    scope: dialogScope, 
    size: 'lg' 
    }); 

modalInstance.result.then(function() { 
    // here I need to assign dialogScope.result to ui-grid Cell variable (MODEL_COL_FIELD) 
}) 

どのように私は、外部スコープの機能を使用してMODEL_COL_FIELD変数を更新することができますか?それはおそらくどこかで利用可能ですgrid.appScope

答えて

1

私が正しく理解していれば、その行データをモーダルに渡そうとしているだけです。このメソッドを使用することをお勧めします。このメソッドは、行オブジェクト自体にアクセスできるようにします。これにより、モーダルの行に対する編集を親グリッドに渡すことができます。

このメソッドを使用すると、結果を渡して行を更新するのではなく、行オブジェクトへの参照を使用しているため、行自体をモーダルから更新することはありません。

私はdialogScope.resultを終了しましたが、ここで何をしている必要はありません。

テンプレート

<div class="ui-grid-cell-contents"> 
    <input ng-class="colt + col.uid" 
     ng-model="MODEL_COL_FIELD" ng-click="grid.appScope.openModal(row)"/> 
</div> 

機能:

$scope.openModal = function (row) { 
    var dialogScope = $scope.$new(); 
    dialogScope.result = ''; 
    dialogScope.rowEntity = row.entity; 

    var modalInstance = $modal.open({ 
    templateUrl: 'url here', 
    scope: dialogScope, 
    size: 'lg' 
    }); 

modalInstance.result.then(function() { 
    // here I need to assign dialogScope.result to ui-grid Cell variable (MODEL_COL_FIELD) 
})