2017-04-07 212 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。像:

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

然后在控制器:

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> 
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

你可以简单地resolve您的PARAM。就像这样:

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

}); 
相关问题