Angularjs 如何将$scope.variables传输到控制器?

Angularjs 如何将$scope.variables传输到控制器?,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在构建一个系统,在这个系统中,我将项目列在一个带有变量的列表中 头衔 技巧 预算 张贴 我还有一个模式,当我点击列表中的一个项目时,它会打开。我想获取当前选定的项目,并在第二个模态控制器中使用其变量?这可能吗 我曾考虑使用一种服务,缓存从数据库中提取的所有数据,但我不知道如何只显示所选项目,而不是模式中的所有项目 以下是列表项的我的控制器: app.controller('openProjectsCtrl', ['$scope', '$http', 'projectsModal', func

我正在构建一个系统,在这个系统中,我将项目列在一个带有变量的列表中

  • 头衔
  • 技巧
  • 预算
  • 张贴
  • 我还有一个模式,当我点击列表中的一个项目时,它会打开。我想获取当前选定的项目,并在第二个模态控制器中使用其变量?这可能吗

    我曾考虑使用一种服务,缓存从数据库中提取的所有数据,但我不知道如何只显示所选项目,而不是模式中的所有项目

    以下是列表项的我的控制器:

    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();
      };    
    
    }]);
    
    模态控制器(我想在其中查看所选变量):


    是的,您可以使用两种方法在另一个控制器中使用一个控制器的变量

  • 创建服务以在它们之间进行通信
  • 使用$rootScope.$broadcast
  • 示例代码

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

    是的,您可以使用两种方法在另一个控制器中使用一个控制器的变量

  • 创建服务以在它们之间进行通信
  • 使用$rootScope.$broadcast
  • 示例代码

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

    是的,您可以使用两种方法在另一个控制器中使用一个控制器的变量

  • 创建服务以在它们之间进行通信
  • 使用$rootScope.$broadcast
  • 示例代码

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

    是的,您可以使用两种方法在另一个控制器中使用一个控制器的变量

  • 创建服务以在它们之间进行通信
  • 使用$rootScope.$broadcast
  • 示例代码

    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);
    }
    });
    
    //Html
    //这可能是列表或其他。但我在这里使用div元素。
    //范围
    $scope.listClick=函数(obj$event){
    log($event.target);
    //使用服务保存$event.target元素并在下一个控制器中使用。
    }
    
    //Html
    //这可能是列表或其他。但我在这里使用div元素。
    //范围
    $scope.listClick=函数(obj$event){
    log($event.target);
    //使用服务保存$event.target元素并在下一个控制器中使用。
    }
    
    //Html
    //这可能是列表或其他。但我在这里使用div元素。
    //范围
    $scope.listClick=函数(obj$event){
    log($event.target);
    //使用服务保存$event.target元素并在下一个控制器中使用。
    }
    
    //Html
    //这可能是列表或其他。但我在这里使用div元素。
    //范围
    $scope.listClick=函数(obj$event){
    log($event.target);
    //使用服务保存$event.target元素并在下一个控制器中使用。
    }
    
    对于角度用户界面模型,您可以使用:

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

    对于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;
    
    }]);
    

    对于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;
    
    }]);
    

    对于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;
    
    }]);
    


    好的,我知道可以使用该服务,但如何仅显示选定列表项的数据。我只知道该方法缓存来自$http的结果,但这将显示所有结果?您可以在您的服务器上应用ng模型,然后将该模型值存储在服务变量中。您是否能够提供服务方法的快速示例?检查新编辑的答案,我提供了一个关于如何添加$scope而不是字符串的示例代码?好的,我知道可以使用该服务,但是如何仅显示所选列表项的数据。我只知道该方法缓存来自$http的结果,但这将显示所有结果?您可以在您的服务器上应用ng模型,然后将该模型值存储在服务变量中。您是否能够提供服务方法的快速示例?检查新编辑的答案,我提供了一个关于如何添加$scope而不是字符串的示例代码?好的,我知道可以使用该服务,但是如何仅显示所选列表项的数据。我只知道该方法缓存来自$http的结果,但这将显示所有结果?您可以在您的服务器上应用ng模型,然后将该模型值存储在服务变量中。您是否能够提供服务方法的快速示例?检查新编辑的答案,我提供了一个关于如何添加$scope而不是字符串的示例代码?好的,我知道可以使用该服务,但是如何仅显示所选列表项的数据。我只知道该方法缓存来自$http的结果,但这将显示所有结果?您可以在您的服务器上应用ng模型,然后将该模型值存储在服务变量中。您是否能够提供服务方法的快速示例?检查新编辑的答案,我已经提供了一个示例代码,说明了如何添加$scope而不是字符串?是哪种模式?角度用户界面?什么是模态?角度用户界面?什么是模态?角度用户界面?什么是模态?Angular UI?不幸的是,我在使用UI Modals时遇到了问题,所以我不再使用它们,如果你能告诉我如何使用它们,那么我可能可以使用它们。在我的回答中,你需要使用它们的一切,首先注入$modal,然后用$modal.open打开它(可能在单击某个地方之后),当您打开它时,您可以定义它要使用的控制器,并解析要注入模态控制器的范围。就是这样。不幸的是,我在使用ui模态时遇到了问题,所以我不再使用它们了,如果你能告诉我如何使用它们,那么我可能可以使用它们。在我的回答中,你需要使用它们的一切,首先注入$modal,然后用$modal.open打开它(可能在单击某个地方之后),当您打开它时,您可以定义它要使用的控制器,并解析要注入模态控制器的范围。就是这样。不幸的是,我在使用ui模式时遇到了问题,所以我不再使用它们了,如果你能告诉我如何使用它们,那么我可能可以在其他地方使用它们