Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 将值范围传递给另一个_Jquery_Html_Angularjs - Fatal编程技术网

Jquery 将值范围传递给另一个

Jquery 将值范围传递给另一个,jquery,html,angularjs,Jquery,Html,Angularjs,现在,我有一个控制器,它允许通过搜索输入从数据库获取数据(json) var app = angular.module('myApp',[]); app.controller('MailCtrl',function($scope,itemFactory){ $scope.init = function(){ $scope.items = {}; var search = $('#input').val(); mailFactory.

现在,我有一个控制器,它允许通过搜索输入从数据库获取数据(json)

var app = angular.module('myApp',[]);

app.controller('MailCtrl',function($scope,itemFactory){
    $scope.init = function(){
         $scope.items = {};
         var search = $('#input').val();
         mailFactory.getItems(search).success(function(data){
             $scope.items = data;
         });
    }
    $('#input').keyup(function(){
         $scope.init()
    });


});

app.factory('itemFactory', function($http){
    var factory = {};
    factory.getItems = function(search) {
        return $http.get("/admin/get_saved_items/?search="+search);
    }
return factory;
)};
此控制器允许仅使用用户名(显示)填充列表。但来自数据库的数据看起来像

[{"username" : "username1","first_name":"first_name1","last_name":"last_name1"},
{"username" : "username2","first_name":"first_name2","last_name":"last_name2"},..]
我想做的是单击此列表的一个元素填充另一个$scope以填充表(用户名、名字、姓氏)。 此外,当清除搜索输入以搜索其他用户名时。该表保留数据,可以在表中添加更多条目

更多信息

我的模板看起来像

 %div{:ng=>{:controller=>'MailCtrl'}}
      %div.col-lg-6
           %input.form-control#unsername{:name =>'unsername',:type=>'text', :value=>parameters['unsername'],:autocomplete => "off"}

      %div.col-lg-6
           %ul{:ng=>{:repeat=>"item in items"}}
                 %li
                     {{ item.username }}

 %div.form-group{:ng=>{:controller=>'userCtlr'}}
      %table.table.table-bordered#table_user
           %tr
                %th
                   Username
                %th
                   first name
                %th
                   last name
           %tr{:ng=>{:repeat=>"user in users"}}
                 %td
                   {{user.username}}
                 %td
                   {{user.first_name}}
                 %td
                   {{user.las_name}}

使用共享服务并将其注入任何控制器:

    angular.module("yourAppName", []).factory("mySharedService", function(){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.setValues = function(params){
            mySharedService.values = params;
        }

        return mySharedService; 
   });
然后注入控制器。例如:

function MainCtrl($scope, mySharedService) {
  var obj = $scope.someObj; 
  mySharedService.setValues(obj);
}

function AdditionalCtrl($scope, mySharedService) {
  $scope.var2= myService.values;
}
更新:获取Stef评论。 如果要将加载的数据从一个控制器传递到另一个控制器,可以在ng-click()中调用传递函数,并从sharedService广播所需的事件

查看:

<input ng-model="someModel" ng-click="passData(items)">
 function FirstCtrl($scope, mySharedService) {
      $scope.passData(params){
         mySharedService.setValues(params);
      }
 }
    angular.module("yourAppName", []).factory("mySharedService", function($rootScope){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.setValues = function(params){
            mySharedService.values = params;
            $rootScope.$broadcast('dataPassed');
        }

        return mySharedService; 
   });
 function SecondController($scope, mySharedService) {
    $scope.$on('dataPassed', function () {
        $scope.newItems = mySharedService.values;
    });
 }
共享服务:

<input ng-model="someModel" ng-click="passData(items)">
 function FirstCtrl($scope, mySharedService) {
      $scope.passData(params){
         mySharedService.setValues(params);
      }
 }
    angular.module("yourAppName", []).factory("mySharedService", function($rootScope){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.setValues = function(params){
            mySharedService.values = params;
            $rootScope.$broadcast('dataPassed');
        }

        return mySharedService; 
   });
 function SecondController($scope, mySharedService) {
    $scope.$on('dataPassed', function () {
        $scope.newItems = mySharedService.values;
    });
 }
第二控制器:

<input ng-model="someModel" ng-click="passData(items)">
 function FirstCtrl($scope, mySharedService) {
      $scope.passData(params){
         mySharedService.setValues(params);
      }
 }
    angular.module("yourAppName", []).factory("mySharedService", function($rootScope){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.setValues = function(params){
            mySharedService.values = params;
            $rootScope.$broadcast('dataPassed');
        }

        return mySharedService; 
   });
 function SecondController($scope, mySharedService) {
    $scope.$on('dataPassed', function () {
        $scope.newItems = mySharedService.values;
    });
 }

对于多个控制器之间的通信,请使用我从angularjs开始的服务。我如何通过单击一个列表元素来调用它?(ng点击???@Stefrob I更新您指定问题的答案:)