我正在建立一个系统,我在列表中列出了包含变量的项目
当我点击列表中的某个项目时,我还会打开一个模态。我想获取当前所选项目并在我的第二个模态控制器中使用其变量?这可能吗?
我正在考虑使用一种服务来缓存从数据库中提取的所有数据,但后来我不知道我将如何仅显示所选项目而不是模式中的每个项目。
这是列表项的控制器:
app.controller('openProjectsCtrl', ['$scope', '$http', 'projectsModal',
function ($scope, $http, projectsModal) {
$http.get("http://localhost/app/controllers/php/getProjects.php")
.success(function (response) {
$scope.projects = response.projects;
});
$scope.showModal = function() {
projectsModal.deactivate();
projectsModal.activate();
};
}]);
模态控制器(我想要查看所选变量):
app.controller('projectsModalCtrl', ['$scope', '$timeout', 'projectsModal',
function ($scope, $timeout, projectsModal) {
var ctrl = this;
ctrl.closeMe = function () {
projectsModal.deactivate();
};
}]);
答案 0 :(得分:2)
是的,您可以使用两种方法在另一个控制器内使用一个控制器的变量
示例代码
angular.module('myservice', []).service('msgBus', function() {
this.serviceValue= {};
}]);
});
并在控制器中使用它:
控制器1
angular.module('myservice', []).controller('ctrl1',function($scope, msgBus) {
$scope.sendmsg = function() {
msgBus.serviceValue='Hello';
}
});
控制器2
angular.module('myservice', []).controller('ctrl2',function($scope, msgBus) {
$scope.checkValue(){
alert( msgBus.serviceValue);
}
});
答案 1 :(得分:1)
//Html
<div ng-click="listClick()"></div> //this might be list or other.But i take div element here.
//scope
$scope.listClick= function(obj, $event){
console.log($event.target);
//Save $event.target element using service and used in next controller.
}
答案 2 :(得分:0)
使用Angular UI模式,您可以使用:
app.controller('openProjectsCtrl', ['$scope', '$http', '$modal',
function ($scope, $http, $modal) {
// Open modal for code
var modalInstance = $modal.open({
templateUrl: 'modal.html',
controller: 'projectsModalCtrl',
resolve: {
yourObject: function() {
return $scope.yourObject;
}
},
scope: $scope
});
});
app.controller('projectsModalCtrl', ['$scope', '$timeout', '$modalInstance', 'yourObject',
function ($scope, $timeout, $modalInstance, yourObject) {
$scope.yourObject = yourObject;
}]);