2017-04-07 8 views
0

私は変数を受け取るこの関数を持っています。これをコントローラで使用したいのです。この変数をuibコントローラに渡す

ctrl.openModal= myItem => { 
    let modal = $uibModal.open({ 
     templateUrl: 'path/to/my/template.html', 
     controller: 'modalController' 
    }); 
}; 

問題は、私はそれはそれは未定義であると言いログインしようとすると、コントローラ

module.controller('modalController', function ($scope) { 

    console.log(myItem); 

}); 

myItemにアクセスする方法がわからないということであるように

私のコードが見えます。

答えて

1

使用resolve。同様に:

module.controller('modalController', function ($scope, myItem) { 
    console.log(myItem); 
    $scope.myItem =myItem;// assign to scope variable to acces in your modal template 
}); 

//例モーダルテンプレート:

<script type="text/ng-template" id="template.html"> 
     <div class="modal-header"> 
      <h3 class="modal-title">modal template</h3> 
     </div> 
     <div class="modal-body">  
      {{ myItem }} 
     </div> 
</script> 
コントローラに続いて

resolve: { 
    myItem : function() { 
     return myItem; 
    } 
} 

0

は、スコープを使用してモーダルにデータを渡します。

// Create the modal scope 
var modalScope = $rootScope.$new(); 
modalScope.item = {'foo': 'bar'}; 

var modal = $uibModal.open({ 
    templateUrl: '/partials/modal.html', 
    controller: modalController 
    scope: modalScope 
}); 

/** 
* 
* @param $scope The modal instance scope 
* @param $uibModalInstance the modal instance (injected) 
*/ 
function modalController($scope, $uibModalInstance) { 
    console.log($scope.item); 
} 
0

あなたは単にあなたのparamをresolveすることができます。このように:

ctrl.openModal= myItem => { 
    let modal = $uibModal.open({ 
     templateUrl: 'path/to/my/template.html', 
     controller: 'modalController' 
     resolve: { 
      myItem:() => myItem 
     } 
    }); 
}; 

さて、あなたはあなたのコントローラ内のmyItemを注入することができます

module.controller('modalController', function ($scope, myItem) { 

    console.log(myItem); 

}); 
関連する問題